docker: converted it to a compose file and removed run.sh
This commit is contained in:
parent
ac9927528e
commit
3d2cad2213
6 changed files with 26 additions and 174 deletions
60
README.md
60
README.md
|
@ -1,61 +1 @@
|
|||
> [!WARNING]
|
||||
> **Maybe something is not working, use this image with caution, bad things can happens. YHBW**
|
||||
|
||||
# Proxmox VE on a Docker container
|
||||
Proxmox Virtual Environment on a Docker container
|
||||
|
||||
## Known limits
|
||||
* **Postfix is not working**
|
||||
* (and maybe many other things)
|
||||
|
||||
## How to run
|
||||
`./run.sh` ;-)
|
||||
What does [run.sh](run.sh) do:
|
||||
* set docker ENV vars if they are set in the script or in the `.envs` file
|
||||
* set shell script vars if they are set in the script or in the `.shell-vars` file (see [example](#environment-variables))
|
||||
* check if datastore exists; if not, it exit prior tu run the container (maybe in future i'll make it more smart, see [To DO](#to-do) section)
|
||||
* run the container
|
||||
|
||||
or
|
||||
`docker run -d --name pve neomediatech/pve`
|
||||
|
||||
## Environment Variables
|
||||
| Name | Description | Default |
|
||||
| ------------------- | --------------------------------------------------------------- | --------------- |
|
||||
| ADMIN_PASSWORD | Password to access PVE web interface (mandatory) | (none) |
|
||||
| RELAY_HOST | Hostname to use to relay email from Postfix (NOT WORKING!) | |
|
||||
| PVE_ENTERPRISE | If set to "yes", enterprise repository will be retained | no |
|
||||
| ENABLE_PVE_FIREWALL | If set to "no", PVE firewall service will be disabled | yes |
|
||||
|
||||
Set vars in `run.sh` script and/or set them in `.envs` file.
|
||||
Example `.envs` file:
|
||||
```
|
||||
ADMIN_PASSWORD=myrealsecretpassword
|
||||
RELAY_HOST=10.40.50.4
|
||||
```
|
||||
## run.sh script shell vars
|
||||
| Name | Description | Default
|
||||
| ------------------- | --------------------------------------------------------------- | ---------------
|
||||
| INTERACTIVE | Run the container in "interactive mode" (run it in foreground) <br /> CTRL+C will end the container | no
|
||||
| NAME | Proxmox VE name | pve
|
||||
| BASE_PATH | Path where to store PVE configurations, users, etc... | /srv/pve
|
||||
|
||||
`.shell-vars` example file:
|
||||
```
|
||||
NAME="myserver-pve"
|
||||
BASE_PATH="/srv/pve"
|
||||
INTERACTIVE="no"
|
||||
```
|
||||
## Mountpoints/volumes
|
||||
Put your docker bindmount in the script [run.sh](run.sh) or in the `.volumes` file
|
||||
`.volumes` example file:
|
||||
```
|
||||
${BASE_PATH}/data/logs:/var/log
|
||||
${BASE_PATH}/data/pve_cluster:/var/lib/pve-cluster
|
||||
${BASE_PATH}/data/pve_manager:/var/lib/pve-manager
|
||||
${BASE_PATH}/data/bin:/srv/bin
|
||||
```
|
||||
|
||||
## To DO
|
||||
- [ ] Make Postfix working, to send emails
|
||||
|
||||
|
|
23
docker-compose.yml
Normal file
23
docker-compose.yml
Normal file
|
@ -0,0 +1,23 @@
|
|||
services:
|
||||
pveowo:
|
||||
image: neomediatech/pve:latest
|
||||
#build: ./minecraft-docker
|
||||
#command: ["java", "-Xmx2048M", "-jar", "server.jar", "true"]
|
||||
privileged: true
|
||||
env_file:
|
||||
- .env
|
||||
devices:
|
||||
- "/dev/kvm"
|
||||
- "/dev/fuse"
|
||||
#OPTIONS="$OPTIONS --privileged --device /dev/fuse --device=/dev/kvm --add-host $NAME:127.0.0.1"
|
||||
extra_hosts:
|
||||
- "pveowo:127.0.0.1"
|
||||
volumes:
|
||||
- "./data:/root/minecraft"
|
||||
- "./data/logs:/var/log"
|
||||
- "./data/pve_cluster:/var/lib/pve-cluster"
|
||||
- "./data/pve_manager:/var/lib/pve-manager"
|
||||
- "./data/bin:/srv/bin"
|
||||
ports:
|
||||
- "8006:8006"
|
||||
restart: always
|
|
@ -1,69 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -eo pipefail
|
||||
shopt -s nullglob
|
||||
|
||||
# logging functions
|
||||
pve_log() {
|
||||
local type="$1"; shift
|
||||
printf '%s [%s] [Entrypoint]: %s\n' "$(date --rfc-3339=seconds)" "$type" "$*"
|
||||
}
|
||||
pve_note() {
|
||||
pve_log Note "$@"
|
||||
}
|
||||
pve_warn() {
|
||||
pve_log Warn "$@" >&2
|
||||
}
|
||||
pve_error() {
|
||||
pve_log ERROR "$@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Verify that the minimally required password settings are set for new databases.
|
||||
docker_verify_minimum_env() {
|
||||
if [ -z "$ADMIN_PASSWORD" ]; then
|
||||
pve_error $'Password option is not specified\n\tYou need to specify an ADMIN_PASSWORD'
|
||||
fi
|
||||
}
|
||||
|
||||
docker_setup_pve() {
|
||||
#Set pve user
|
||||
echo "root:$ADMIN_PASSWORD"|chpasswd
|
||||
}
|
||||
|
||||
RELAY_HOST=${RELAY_HOST:-ext.home.local}
|
||||
sed -i "s/RELAY_HOST/$RELAY_HOST/" /etc/postfix/main.cf
|
||||
PVE_ENTERPRISE=${PVE_ENTERPRISE:-no}
|
||||
if [ "$PVE_ENTERPRISE" != "yes" ]; then
|
||||
rm -f /etc/apt/sources.list.d/pve-enterprise.list
|
||||
fi
|
||||
|
||||
docker_verify_minimum_env
|
||||
|
||||
# Start api first in background
|
||||
#echo -n "Starting Proxmox VE API..."
|
||||
#/usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-api &
|
||||
#while true; do
|
||||
# if [ ! -f /run/proxmox-backup/api.pid ]; then
|
||||
# echo -n "..."
|
||||
# sleep 3
|
||||
# else
|
||||
# break
|
||||
# fi
|
||||
#done
|
||||
#echo "OK"
|
||||
|
||||
docker_setup_pve
|
||||
|
||||
if [ ! -d /var/log/pveproxy ]; then
|
||||
mkdir -p /var/log/pveproxy
|
||||
chmod 777 /var/log/pveproxy
|
||||
fi
|
||||
|
||||
if [ -n "$ENABLE_PVE_FIREWALL" -a "$ENABLE_PVE_FIREWALL" == "no" ]; then
|
||||
systemctl mask pve-firewall.service
|
||||
fi
|
||||
|
||||
echo "Running PVE..."
|
||||
exec "$@"
|
||||
#exec gosu backup /usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-proxy "$@"
|
||||
|
45
run.sh
45
run.sh
|
@ -1,45 +0,0 @@
|
|||
#!/bin/bash
|
||||
# shell vars set here will be overridden by same shell vars set in $BASE_PATH/.shell-vars file
|
||||
BASE_PATH="/srv/pve"
|
||||
IMAGE="neomediatech/pve:latest"
|
||||
#IMAGE="pve"
|
||||
NAME="pve"
|
||||
VOLUMES="" # volumes set here will be added to volumes found in $BASE_PATH/.volumes file (if it exists)
|
||||
PORTS="-p 8006:8006"
|
||||
OPTIONS=""
|
||||
OPTIONS="$OPTIONS --privileged --device /dev/fuse --device=/dev/kvm --add-host $NAME:127.0.0.1"
|
||||
OPTIONS="$OPTIONS --tmpfs /tmp --tmpfs /run --tmpfs /run/lock --cgroupns private"
|
||||
ENVS="" # vars set here will override same vars in $BASE_PATH/.env file
|
||||
ENTRYPOINT=""
|
||||
#ENTRYPOINT="--entrypoint /bin/bash"
|
||||
INTERACTIVE="no"
|
||||
|
||||
if [ -f $BASE_PATH/.shell-vars ]; then
|
||||
source $BASE_PATH/.shell-vars
|
||||
fi
|
||||
|
||||
if [ -f $BASE_PATH/.volumes ]; then
|
||||
for VOLUME in $(cat $BASE_PATH/.volumes); do
|
||||
VOLUMES="$VOLUMES -v $(eval "echo $VOLUME")"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -f $BASE_PATH/.env ]; then
|
||||
ENVS="--env-file $BASE_PATH/.env $ENVS"
|
||||
fi
|
||||
|
||||
if [ "$INTERACTIVE" == "yes" ]; then
|
||||
RUN_OPTIONS="-it"
|
||||
else
|
||||
RUN_OPTIONS="-d"
|
||||
fi
|
||||
|
||||
echo "Stopping existing Proxmox VE instances..."
|
||||
docker stop $NAME 2>/dev/null
|
||||
echo "Deleting old Proxmox VE instances..."
|
||||
docker rm $NAME 2>/dev/null
|
||||
echo "Pulling new version of Proxmox VE Docker image..."
|
||||
docker pull $IMAGE 2>/dev/null
|
||||
echo "Starting Proxmox VE..."
|
||||
docker run $RUN_OPTIONS $PORTS --name $NAME --hostname $NAME $OPTIONS $VOLUMES $ENVS $ENTRYPOINT $IMAGE
|
||||
|
3
srv/pve/.envs
Normal file
3
srv/pve/.envs
Normal file
|
@ -0,0 +1,3 @@
|
|||
ADMIN_PASSWORD=nyaowo
|
||||
RELAY_HOST=10.40.50.4
|
||||
PVE_ENTERPRISE=no
|
Loading…
Add table
Reference in a new issue