docker restart policies and fixes on backups & setups after re-settuping the whole server
This commit is contained in:
parent
edc2930086
commit
120974b6d8
@ -1,12 +1,12 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
mkdir ~GDriveBackup/.
|
mkdir ~/gdrivebackup
|
||||||
rclone copy rootGdrive: ~/GDriveBackup/.
|
rclone copy rootGdrive: ~/gdrivebackup/.
|
||||||
EPOCH=$(date +%s)
|
EPOCH=$(date +%s)
|
||||||
tar -cpf ~/backups/GDriveBackup_$EPOCH.tar ~/GDriveBackup;
|
tar -cpf ~/backups/gdrivebackup_$EPOCH.tar ~/gdrivebackup;
|
||||||
rm -rf ~/GDriveBackup
|
rm -rf ~/gdrivebackup
|
||||||
BACKUP_COUNT=$(ls -tU ~/backups/ | wc -l)
|
BACKUP_COUNT=$(ls -tU ~/backups/gdrivebackup_* | wc -l)
|
||||||
SIZE_DISK=$(df -h / --output=avail | tail -1) #if less than 100G available
|
SIZE_DISK=$(df / --output=avail | tail -1) #if less than 100G available
|
||||||
if [[ $BACKUP_COUNT -gt 10 ]] || [[ $SIZE_DISK -lt 100000000 ]]
|
if [[ $BACKUP_COUNT -gt 10 ]] || [[ $SIZE_DISK -lt 100000000 ]]
|
||||||
then rm $(ls -tU ~/backups | head -1) # delete oldest backup
|
then rm $(ls -tU ~/backups/gdrivebackup_* | head -1) # delete oldest backup
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -10,7 +10,7 @@ fi
|
|||||||
|
|
||||||
apt update;
|
apt update;
|
||||||
apt upgrade;
|
apt upgrade;
|
||||||
apt install -y docker docker-compose python3 curl nmap emacs-nox unzip zip htop postfix tree;
|
apt install -y docker docker-compose python3 curl nmap emacs-nox unzip zip htop postfix tree httpie jq;
|
||||||
curl https://rclone.org/install.sh | sudo bash
|
curl https://rclone.org/install.sh | sudo bash
|
||||||
sudo mkdir -p /etc/apt/keyrings
|
sudo mkdir -p /etc/apt/keyrings
|
||||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
@ -45,3 +45,7 @@ cd $GLOB_DIR/gitea
|
|||||||
# run server containers
|
# run server containers
|
||||||
# enjoy :]
|
# enjoy :]
|
||||||
|
|
||||||
|
|
||||||
|
#add current user to dockergroup
|
||||||
|
usermod -a -G docker $USER
|
||||||
|
nexgrp docker
|
||||||
|
|||||||
@ -2,11 +2,11 @@ services:
|
|||||||
hangftp:
|
hangftp:
|
||||||
image: drakkan/sftpgo:v2.6.6-alpine-slim
|
image: drakkan/sftpgo:v2.6.6-alpine-slim
|
||||||
container_name: hang_ftp
|
container_name: hang_ftp
|
||||||
restart:always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- traefik_default
|
- traefik_default
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/Music:/srv/sftpgo/data
|
- /home/hurlu/music:/srv/sftpgo/data
|
||||||
- ./conf-hangsftpgo:/var/lib/sftpgo
|
- ./conf-hangsftpgo:/var/lib/sftpgo
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
|
|||||||
@ -4,6 +4,6 @@ docker exec -u git -w "/data/git" $(docker ps -qf "name=^/gitea$") bash -c "/app
|
|||||||
cd $SCRIPT_DIR;
|
cd $SCRIPT_DIR;
|
||||||
mv gitea_data/git/gitea-dump* gitea_backup.zip;
|
mv gitea_data/git/gitea-dump* gitea_backup.zip;
|
||||||
rm -f gitea_data/git/gitea-dump*;
|
rm -f gitea_data/git/gitea-dump*;
|
||||||
rclone copy gitea_backup.zip Gdrive:/;
|
rclone copy gitea_backup.zip GDrive:/;
|
||||||
rm -f gitea_backup.zip;
|
rm -f gitea_backup.zip;
|
||||||
|
|
||||||
|
|||||||
91
gitea/restore.sh
Executable file
91
gitea/restore.sh
Executable file
@ -0,0 +1,91 @@
|
|||||||
|
# open gitea_db docker
|
||||||
|
# use gitea_db secrets to put the content of the gitea_db.sql file into psql, like joplin's restore.sh
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
|
||||||
|
|
||||||
|
if [[ $1 == "" ]]
|
||||||
|
then
|
||||||
|
echo "./restore.sh [gitea backup zip file name]"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
read -r -p "Assuming $1 is the gitea zip backup file: is it correct ? (y/n) " response
|
||||||
|
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
|
||||||
|
then
|
||||||
|
FILE_NAME=$1
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -r -p "Have you started the docker container ? (y/n) " response
|
||||||
|
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
|
||||||
|
then
|
||||||
|
read -r -p "Have you started the install wizard ? (you shouldn't have) (y/n) " response
|
||||||
|
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
|
||||||
|
then
|
||||||
|
echo "Too soon for the web install wizard, start over the backup process."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Then do it, and launch this script again afterwards !"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
unzip -d $SCRIPT_DIR/unzipped $1
|
||||||
|
|
||||||
|
#restore gitea's postgres DB
|
||||||
|
sudo mv $SCRIPT_DIR/unzipped/gitea-db.sql $SCRIPT_DIR/postgres/.
|
||||||
|
source $SCRIPT_DIR/secrets/gitea_db.secret
|
||||||
|
docker exec \
|
||||||
|
-e POSTGRES_USER \
|
||||||
|
-e POSTGRES_DB \
|
||||||
|
gitea_db \
|
||||||
|
bash -c "psql -U $POSTGRES_USER $POSTGRES_DB < /var/lib/postgresql/data/gitea-db.sql"
|
||||||
|
|
||||||
|
read -r -p "Have you started the docker container and did you got through the web install wizard ? (y/n) " response
|
||||||
|
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
|
||||||
|
then
|
||||||
|
echo "Proceeding with backup restoration..."
|
||||||
|
else
|
||||||
|
read -r -p "Then just go do it ! Then where you're done, press Enter." response
|
||||||
|
fi
|
||||||
|
|
||||||
|
source $SCRIPT_DIR/secrets/gitea.secret
|
||||||
|
|
||||||
|
sudo mv -f $SCRIPT_DIR/unzipped gitea_data/.
|
||||||
|
|
||||||
|
#creating extra folder
|
||||||
|
docker exec gitea \
|
||||||
|
/bin/bash -c "mkdir -p /data/git/repositories"
|
||||||
|
|
||||||
|
#chown all to git
|
||||||
|
docker exec gitea \
|
||||||
|
/bin/bash -c "chown -R git:git /data"
|
||||||
|
|
||||||
|
#copy app.ini
|
||||||
|
docker exec gitea \
|
||||||
|
/bin/bash -c "cp /data/unzipped/app.ini /data/gitea/conf/."
|
||||||
|
|
||||||
|
#copy repos
|
||||||
|
docker exec gitea \
|
||||||
|
/bin/bash -c "cp -rf /data/unzipped/repos/* /data/git/repositories/."
|
||||||
|
|
||||||
|
#copy the rest
|
||||||
|
docker exec gitea \
|
||||||
|
/bin/bash -c "cp -rf /data/unzipped/data/* /data/gitea/."
|
||||||
|
|
||||||
|
#chown all to git again, to be safe
|
||||||
|
docker exec gitea \
|
||||||
|
/bin/bash -c "chown -R git:git /data"
|
||||||
|
|
||||||
|
#regen hooks
|
||||||
|
docker exec -u git gitea \
|
||||||
|
/bin/bash -c "/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks"
|
||||||
|
|
||||||
|
#one more tiiime
|
||||||
|
docker exec gitea \
|
||||||
|
/bin/bash -c "chown -R git:git /data"
|
||||||
|
|
||||||
|
sudo rm -rf gitea_data/unzipped
|
||||||
@ -11,5 +11,5 @@ docker exec \
|
|||||||
$(docker ps -qf "name=joplin_db") \
|
$(docker ps -qf "name=joplin_db") \
|
||||||
bash -c "pg_dump -U $POSTGRES_USER --clean --no-owner --no-privileges -d $POSTGRES_DB" > $SCRIPT_DIR/postgres_joplin.sql
|
bash -c "pg_dump -U $POSTGRES_USER --clean --no-owner --no-privileges -d $POSTGRES_DB" > $SCRIPT_DIR/postgres_joplin.sql
|
||||||
|
|
||||||
rclone copy postgres_joplin.sql Gdrive:/
|
rclone copy postgres_joplin.sql GDrive:/
|
||||||
rm -f postgres_joplin.sql
|
rm -f postgres_joplin.sql
|
||||||
|
|||||||
@ -6,7 +6,7 @@ services:
|
|||||||
snapserver:
|
snapserver:
|
||||||
image: jaedb/snapserver
|
image: jaedb/snapserver
|
||||||
container_name: snapserver
|
container_name: snapserver
|
||||||
restart:always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
mopidy:
|
mopidy:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@ -29,7 +29,7 @@ services:
|
|||||||
|
|
||||||
mopidy:
|
mopidy:
|
||||||
container_name: mopidy
|
container_name: mopidy
|
||||||
restart:always
|
restart: always
|
||||||
build: ./
|
build: ./
|
||||||
# image: jaedb/iris:3.70
|
# image: jaedb/iris:3.70
|
||||||
environment:
|
environment:
|
||||||
@ -46,7 +46,7 @@ services:
|
|||||||
- ./docker/mopidy/iris:/var/lib/mopidy/iris # Iris-specific storage
|
- ./docker/mopidy/iris:/var/lib/mopidy/iris # Iris-specific storage
|
||||||
- ./docker/mopidy/m3u:/var/lib/mopidy/m3u # To persist local playlists
|
- ./docker/mopidy/m3u:/var/lib/mopidy/m3u # To persist local playlists
|
||||||
- ./docker/mopidy/mopidy.conf:/config/mopidy.conf
|
- ./docker/mopidy/mopidy.conf:/config/mopidy.conf
|
||||||
- /mnt/Music:/var/lib/mopidy/media
|
- /home/hurlu/music:/var/lib/mopidy/media
|
||||||
- /tmp/snapserver:/tmp
|
- /tmp/snapserver:/tmp
|
||||||
networks:
|
networks:
|
||||||
- traefik_default
|
- traefik_default
|
||||||
@ -60,7 +60,7 @@ services:
|
|||||||
guide:
|
guide:
|
||||||
image: dannyben/madness:1.2.5
|
image: dannyben/madness:1.2.5
|
||||||
container_name: hang_guide
|
container_name: hang_guide
|
||||||
restart:always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- ./markdown:/docs
|
- ./markdown:/docs
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
services:
|
services:
|
||||||
hangyoutube:
|
hangyoutube:
|
||||||
container_name: hang_youtube
|
container_name: hang_youtube
|
||||||
restart:always
|
restart: always
|
||||||
image: ghcr.io/alexta69/metube:2025.12.14
|
image: ghcr.io/alexta69/metube:2025.12.14
|
||||||
mem_limit: 1400m
|
mem_limit: 1400m
|
||||||
cpus: 0.8
|
cpus: 0.8
|
||||||
networks:
|
networks:
|
||||||
- traefik_default
|
- traefik_default
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/Music:/downloads
|
- /home/hurlu/music:/downloads
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.hangyoutube.rule=Host(`youtube.hang.hugowillaume.com`)"
|
- "traefik.http.routers.hangyoutube.rule=Host(`youtube.hang.hugowillaume.com`)"
|
||||||
@ -21,11 +21,11 @@ services:
|
|||||||
hangspotify:
|
hangspotify:
|
||||||
container_name: hang_spotify
|
container_name: hang_spotify
|
||||||
image: ghcr.io/henriquesebastiao/downtify:1.1.1
|
image: ghcr.io/henriquesebastiao/downtify:1.1.1
|
||||||
restart:always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- traefik_default
|
- traefik_default
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/Music:/downloads
|
- /home/hurlu/music:/downloads
|
||||||
mem_limit: 1400m
|
mem_limit: 1400m
|
||||||
cpus: 0.8
|
cpus: 0.8
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@ -2,7 +2,7 @@ SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
|
|||||||
|
|
||||||
cd $SCRIPT_DIR;
|
cd $SCRIPT_DIR;
|
||||||
zip -r -9 mealie.zip mealie;
|
zip -r -9 mealie.zip mealie;
|
||||||
rclone copy mealie.zip Gdrive:/;
|
rclone copy mealie.zip GDrive:/;
|
||||||
rm mealie.zip
|
rm mealie.zip
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -22,3 +22,5 @@ echo '{"channel_name": "Le Coco", "channel_flag_permanent":1}' | $BASE_COMMAND/c
|
|||||||
echo
|
echo
|
||||||
echo '{"channel_name": "STREAM ON", "channel_flag_permanent":1}' | $BASE_COMMAND/channelcreate$API_KEY
|
echo '{"channel_name": "STREAM ON", "channel_flag_permanent":1}' | $BASE_COMMAND/channelcreate$API_KEY
|
||||||
echo
|
echo
|
||||||
|
echo '{"channel_name": "FEBO", "channel_flag_permanent":1}' | $BASE_COMMAND/channelcreate$API_KEY
|
||||||
|
echo
|
||||||
|
|||||||
@ -10,7 +10,6 @@ services:
|
|||||||
- 9987:9987/udp #udp voice port
|
- 9987:9987/udp #udp voice port
|
||||||
- 10080:10080
|
- 10080:10080
|
||||||
- 30033:30033 #file transfer port
|
- 30033:30033 #file transfer port
|
||||||
restart: unless-stopped
|
|
||||||
env_file: ./secrets/teamspeak.secret
|
env_file: ./secrets/teamspeak.secret
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/var/ts3server/
|
- ./data:/var/ts3server/
|
||||||
|
|||||||
@ -6,7 +6,7 @@ services:
|
|||||||
traefik:
|
traefik:
|
||||||
image: "traefik:v2.5.3"
|
image: "traefik:v2.5.3"
|
||||||
container_name: "traefik"
|
container_name: "traefik"
|
||||||
restart:always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
ports:
|
ports:
|
||||||
@ -31,7 +31,7 @@ services:
|
|||||||
traefik-forward-auth:
|
traefik-forward-auth:
|
||||||
image: thomseddon/traefik-forward-auth:2
|
image: thomseddon/traefik-forward-auth:2
|
||||||
container_name: auth_forward
|
container_name: auth_forward
|
||||||
restart:always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
env_file: secrets/traefik_forward_auth.secret
|
env_file: secrets/traefik_forward_auth.secret
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user