feat: Re-structured services and updated readme

This commit is contained in:
2026-07-10 20:13:33 +01:00
parent 3bfa0e6f32
commit d0d1385bf4
33 changed files with 300 additions and 364 deletions
-24
View File
@@ -1,24 +0,0 @@
services:
#MongoDB (27017)
mongodb:
image: "mongo:latest"
container_name: mongoDB
volumes:
- ./mongo/:/data/db
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.tcp.routers.mongodb.rule=HostSNI(`*`)"
- "traefik.tcp.routers.mongodb.entrypoints=mongo"
- "traefik.tcp.routers.mongodb.service=mongodb"
- "traefik.tcp.services.mongodb.loadbalancer.server.port=27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: rootpassword
restart: unless-stopped
networks:
proxy:
external: true
-51
View File
@@ -1,51 +0,0 @@
services:
status:
image: louislam/uptime-kuma:latest
container_name: status
volumes:
- ./uptime-kuma/data:/app/data
networks:
- proxy
labels:
## Expose uptime-kuma Through Trefik ##
- "traefik.enable=true" # <== Enable traefik to proxy this container
- "traefik.http.middlewares.redirect-web-secure.redirectscheme.scheme=https"
- "traefik.http.routers.status-insecure.middlewares=redirect-web-secure"
- "traefik.http.routers.status-insecure.rule=Host(`status.luke-else.co.uk`)"
- "traefik.http.routers.status-insecure.entrypoints=web"
- "traefik.http.routers.status.rule=Host(`status.luke-else.co.uk`)"
- "traefik.http.routers.status.entrypoints=websecure"
- "traefik.http.routers.status.tls.certresolver=myresolver"
restart: unless-stopped
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
security_opt:
- no-new-privileges:true
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./portainer-data:/data
networks:
- proxy
labels:
## Expose portainer Through Trefik ##
- "traefik.enable=true" # <== Enable traefik to proxy this container
- "traefik.http.middlewares.redirect-web-secure.redirectscheme.scheme=https"
- "traefik.http.routers.portainer-insecure.middlewares=redirect-web-secure"
- "traefik.http.routers.portainer-insecure.rule=Host(`portainer.luke-else.co.uk`)"
- "traefik.http.routers.portainer-insecure.entrypoints=web"
- "traefik.http.routers.portainer.rule=Host(`portainer.luke-else.co.uk`)"
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
- "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.tls.certresolver=myresolver"
restart: unless-stopped
networks:
proxy:
external: true
-52
View File
@@ -1,52 +0,0 @@
services:
ackee:
image: electerious/ackee
container_name: ackee
environment:
- WAIT_HOSTS=mongo:27017
- ACKEE_MONGODB=mongodb://mongo-ackee:27017/ackee
env_file:
- .env
expose:
- 3000
networks:
- tracking
- proxy
labels:
## Expose Ackee Through Trefik ##
- "traefik.enable=true" # <== Enable traefik to proxy this container
# Enable CORS headers
- "traefik.http.middlewares.cors-tracking.headers.accesscontrolallowmethods=*"
- "traefik.http.middlewares.cors-tracking.headers.accesscontrolalloworiginlist=https://luke-else.co.uk"
- "traefik.http.middlewares.cors-tracking.headers.accesscontrolallowcredentials=true"
- "traefik.http.middlewares.cors-tracking.headers.accesscontrolallowheaders=Content-Type,Authorization"
- "traefik.http.middlewares.cors-tracking.headers.addvaryheader=true"
- "traefik.http.middlewares.cors-tracking.headers.accesscontrolmaxage=100"
- "traefik.http.middlewares.redirect-web-secure.redirectscheme.scheme=https"
- "traefik.http.routers.ackee-insecure.middlewares=redirect-web-secure"
- "traefik.http.routers.ackee-insecure.rule=Host(`tracking.luke-else.co.uk`)"
- "traefik.http.routers.ackee-insecure.entrypoints=web"
- "traefik.http.routers.ackee.rule=Host(`tracking.luke-else.co.uk`)"
- "traefik.http.routers.ackee.entrypoints=websecure"
- "traefik.http.routers.ackee.tls.certresolver=myresolver"
- "traefik.http.routers.ackee.middlewares=cors-tracking"
depends_on:
- mongo
restart: unless-stopped
mongo:
image: mongo
container_name: mongo-ackee
volumes:
- ./data:/data/db
networks:
- tracking
restart: unless-stopped
networks:
proxy:
external: true
tracking:
-16
View File
@@ -1,16 +0,0 @@
#Script file for spinning down all CICD relevant docker-containers
cd ./Development/Runners/
docker compose down
cd ../..
cd ./TraefikRunner/
docker compose down
cd ..
cd ./Watchtower/
docker compose down
cd ..
docker rmi $(docker images -q)
docker system prune -f -a
docker volume prune -f -a
-13
View File
@@ -1,13 +0,0 @@
#Script file for spinning up all docker-containers
cd ./TraefikRunner/
docker compose pull && docker compose up -d
cd ..
cd ./Development/Runners/
docker compose pull && docker compose up -d
cd ../..
cd ./Watchtower/
docker compose pull && docker compose up -d
cd ..
@@ -13,7 +13,7 @@ services:
CONFIG_FILE: /config.yaml
GITEA_INSTANCE_URL: "https://git.luke-else.co.uk"
GITEA_RUNNER_REGISTRATION_TOKEN: "INSERT REGISTRATION TOKEN"
GITEA_RUNNER_NAME: "CICD"
GITEA_RUNNER_NAME: "CICD#1"
labels:
## Expose cicd Through Trefik ##
- "traefik.enable=true" # <== Enable traefik to proxy this container
@@ -30,4 +30,4 @@ services:
networks:
proxy:
external: true
external: true
+14
View File
@@ -0,0 +1,14 @@
#!/bin/bash
# Script file for spinning down all dev docker-containers
cd "$(dirname "$0")"
cd Runners
docker compose down
cd ..
docker compose -f traefik-docker-compose.yml down
docker compose -f watchtower-docker-compose.yml down
docker rmi $(docker images -q)
docker system prune -f -a
docker volume prune -f -a
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# Script file for spinning up all dev docker-containers
set -e
cd "$(dirname "$0")"
docker compose -f traefik-docker-compose.yml pull && docker compose -f traefik-docker-compose.yml up -d
cd Runners
docker compose pull && docker compose up -d
cd ..
docker compose -f watchtower-docker-compose.yml pull && docker compose -f watchtower-docker-compose.yml up -d
-42
View File
@@ -1,42 +0,0 @@
#Script file for spinning down all docker-containers
cd ./Websites/
docker compose down
cd ..
cd ./Tracking/
docker compose down
cd ..
cd ./Development/Gitea/
docker compose down
cd ../..
cd ./Database/
docker compose down
cd ..
cd ./Bitwarden/
docker compose down
cd ..
cd ./Rustdesk/
docker compose down
cd ..
cd ./Misc/
docker compose down
cd ..
cd ./Watchtower/
docker compose down
cd ..
cd ./Traefik/
docker compose down
cd ..
docker rmi $(docker images -q)
docker system prune -f -a
docker volume prune -f -a
-39
View File
@@ -1,39 +0,0 @@
#Script file for spinning up all docker-containers
cd ./Traefik/
docker compose pull && docker compose up -d
cd ..
cd ./Development/Gitea/
docker compose pull && docker compose up -d
cd ../..
sleep 20 # Allow Gitea + registry to start up before starting the rest of the services
cd ./Watchtower/
docker compose pull && docker compose up -d
cd ..
cd ./Tracking/
docker compose pull && docker compose up -d
cd ..
cd ./Websites/
docker compose pull && docker compose up -d
cd ..
cd ./Database/
docker compose pull && docker compose up -d
cd ..
cd ./Bitwarden/
docker compose pull && docker compose up -d
cd ..
cd ./Rustdesk/
docker compose pull && docker compose up -d
cd ..
cd ./Misc/
docker compose pull && docker compose up -d
cd ..
+14
View File
@@ -0,0 +1,14 @@
#!/bin/bash
# Script file for spinning down all prod docker-containers
cd "$(dirname "$0")"
docker compose -f web-docker-compose.yml down
docker compose -f status-docker-compose.yml down
docker compose -f bitwarden-docker-compose.yml down
docker compose -f rd-docker-compose.yml down
docker compose -f watchtower-docker-compose.yml down
docker compose -f traefik-docker-compose.yml down
docker rmi $(docker images -q)
docker system prune -f -a
docker volume prune -f -a
+14
View File
@@ -0,0 +1,14 @@
#!/bin/bash
# Script file for spinning up all prod docker-containers
set -e
cd "$(dirname "$0")"
docker compose -f traefik-docker-compose.yml pull && docker compose -f traefik-docker-compose.yml up -d
sleep 20 # Allow Traefik + registry auth to settle before starting the rest of the services
docker compose -f watchtower-docker-compose.yml pull && docker compose -f watchtower-docker-compose.yml up -d
docker compose -f status-docker-compose.yml pull && docker compose -f status-docker-compose.yml up -d
docker compose -f web-docker-compose.yml pull && docker compose -f web-docker-compose.yml up -d
docker compose -f bitwarden-docker-compose.yml pull && docker compose -f bitwarden-docker-compose.yml up -d
docker compose -f rd-docker-compose.yml pull && docker compose -f rd-docker-compose.yml up -d
+25
View File
@@ -0,0 +1,25 @@
services:
status:
image: louislam/uptime-kuma:latest
container_name: status
volumes:
- ./uptime-kuma/data:/app/data
networks:
- proxy
labels:
## Expose uptime-kuma Through Trefik ##
- "traefik.enable=true" # <== Enable traefik to proxy this container
- "traefik.http.middlewares.redirect-web-secure.redirectscheme.scheme=https"
- "traefik.http.routers.status-insecure.middlewares=redirect-web-secure"
- "traefik.http.routers.status-insecure.rule=Host(`status.luke-else.co.uk`)"
- "traefik.http.routers.status-insecure.entrypoints=web"
- "traefik.http.routers.status.rule=Host(`status.luke-else.co.uk`)"
- "traefik.http.routers.status.entrypoints=websecure"
- "traefik.http.routers.status.tls.certresolver=myresolver"
restart: unless-stopped
networks:
proxy:
external: true
@@ -8,7 +8,6 @@ services:
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.mongo.address=:27017"
- "--entrypoints.web.transport.respondingTimeouts.readTimeout=120s"
- "--entrypoints.websecure.transport.respondingTimeouts.readTimeout=120s"
- "--entrypoints.web.transport.respondingTimeouts.writeTimeout=120s"
@@ -36,11 +35,11 @@ services:
- "traefik.http.routers.traefik.rule=Host(`traefik.luke-else.co.uk`)"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls.certresolver=myresolver"
- "traefik.http.routers.traefik.tls.certresolver=myresolver"
- "traefik.http.routers.traefik.middlewares=traefik-auth"
- "traefik.http.middlewares.traefik-auth.basicauth.users=user:$$2y$$05$$s/vPphFtSO2fWJR7SYkEb.90UwPDRM3aOKqgOF/rme/3fUQ5tvpTS"
restart: unless-stopped
networks:
proxy:
name: proxy
name: proxy
@@ -0,0 +1,8 @@
services:
watchtower:
image: nickfedor/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_POLL_INTERVAL=60
-28
View File
@@ -3,13 +3,6 @@
## General
- Setup non root user
- UFW should be setup to keep VPS secure and only allow for:
- https
- http
- ssh
- ftp
- 27017
- "21115:21115/tcp"
- "21116:21116/tcp"
@@ -17,8 +10,6 @@
- "21117:21117/tcp"
- "21119:21119/tcp"
- Install SSH keys
- Setup unattended upgrades
- Install docker, docker-compose and apache utils.
## Traefik + TraefikRunner + Traefik VPN
@@ -34,15 +25,6 @@
- Ensure that a registration token has been setup before continuing
## Tracking
Create a .env file with the following content:
```sh
ACKEE_USERNAME=luke-else
ACKEE_PASSWORD=XXX
```
## Websites
- Ensure website files are copied over
@@ -52,13 +34,3 @@ ACKEE_PASSWORD=XXX
- Ensure that all data is fully encrypted during transfer.
- Ensure that ports are assigned correctly for the system
## Rustdesk
- No additional setup required bar the ports
## Database
- Ensure that mysql root password, user and default database are updated.
- Ensure that mongo root password, and user are updated.
- Ensure database ports are correctly assigned and do not have to pass through traefik.
-17
View File
@@ -1,17 +0,0 @@
#Script file for spinning down all CICD relevant docker-containers
cd ./VPN/
docker compose down
cd ..
cd ./TraefikVPN/
docker compose down
cd ..
cd ./Watchtower/
docker compose down
cd ..
docker rmi $(docker images -q)
docker system prune -f -a
docker volume prune -f -a
-13
View File
@@ -1,13 +0,0 @@
#Script file for spinning up all docker-containers
cd ./TraefikRunner/
docker compose pull && docker compose up -d
cd ..
cd ./VPN/
docker compose pull && docker compose up -d
cd ..
cd ./Watchtower/
docker compose pull && docker compose up -d
cd ..
+11
View File
@@ -0,0 +1,11 @@
#!/bin/bash
# Script file for spinning down all vpn docker-containers
cd "$(dirname "$0")"
docker compose -f vpn-docker-compose.yml down
docker compose -f traefik-docker-compose.yml down
docker compose -f watchtower-docker-compose.yml down
docker rmi $(docker images -q)
docker system prune -f -a
docker volume prune -f -a
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
# Script file for spinning up all vpn docker-containers
set -e
cd "$(dirname "$0")"
docker compose -f traefik-docker-compose.yml pull && docker compose -f traefik-docker-compose.yml up -d
docker compose -f vpn-docker-compose.yml pull && docker compose -f vpn-docker-compose.yml up -d
docker compose -f watchtower-docker-compose.yml pull && docker compose -f watchtower-docker-compose.yml up -d
@@ -0,0 +1,8 @@
services:
watchtower:
image: nickfedor/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_POLL_INTERVAL=60