diff --git a/firefly/docker-compose.yml b/firefly/docker-compose.yml index 65820e4..7547831 100644 --- a/firefly/docker-compose.yml +++ b/firefly/docker-compose.yml @@ -30,7 +30,7 @@ services: - 'upload:/var/www/html/storage/upload' db: - image: 'postgres:13.3-alpine' + image: 'postgres:13.2-alpine' restart: 'always' healthcheck: @@ -48,7 +48,7 @@ services: - 'db-data:/var/lib/postgresql/data' redis: - image: 'redis:6.2.4-alpine' + image: 'redis:6.2.2-alpine' restart: 'always' healthcheck: diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml index e860506..6e65af8 100644 --- a/gitea/docker-compose.yml +++ b/gitea/docker-compose.yml @@ -3,7 +3,7 @@ version: '2.4' services: app: # Latest contains a development version - image: 'gitea/gitea:1.14.2-rootless' + image: 'gitea/gitea:1.14.1-rootless' restart: 'always' depends_on: @@ -31,7 +31,7 @@ services: - '/etc/localtime:/etc/localtime:ro' db: - image: 'postgres:13.3-alpine' + image: 'postgres:13.2-alpine' restart: 'always' healthcheck: diff --git a/koel/docker-compose.yml b/koel/docker-compose.yml index 8e0fbf3..c207d71 100644 --- a/koel/docker-compose.yml +++ b/koel/docker-compose.yml @@ -27,7 +27,7 @@ services: - 'index:/var/www/html/storage/search-indexes' db: - image: 'mariadb:10.6.1-focal' + image: 'mariadb:10.5.9-focal' restart: 'always' command: '--default-authentication-plugin=mysql_native_password' diff --git a/miniflux/docker-compose.yml b/miniflux/docker-compose.yml index d591605..24aae5a 100644 --- a/miniflux/docker-compose.yml +++ b/miniflux/docker-compose.yml @@ -2,7 +2,7 @@ version: '2.4' services: app: - image: 'miniflux/miniflux:2.0.30' + image: 'miniflux/miniflux:2.0.29' restart: 'always' depends_on: @@ -25,7 +25,7 @@ services: - 'nginx' db: - image: 'postgres:13.3-alpine' + image: 'postgres:13.2-alpine' restart: 'always' healthcheck: diff --git a/monica/docker-compose.yml b/monica/docker-compose.yml index 2491f37..2556e8e 100644 --- a/monica/docker-compose.yml +++ b/monica/docker-compose.yml @@ -2,7 +2,7 @@ version: '2.4' services: app: - image: 'monica:2.22.0-apache' + image: 'monica:2.20.0-apache' restart: 'always' healthcheck: @@ -26,7 +26,7 @@ services: - 'data:/var/www/html/storage' db: - image: 'mariadb:10.6.1-focal' + image: 'mariadb:10.5.9-focal' restart: 'always' command: '--default-authentication-plugin=mysql_native_password' @@ -40,7 +40,7 @@ services: - 'db-data:/var/lib/mysql' redis: - image: 'redis:6.2.4-alpine' + image: 'redis:6.2.2-alpine' restart: 'always' healthcheck: diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml index bfaed57..bb6be0d 100644 --- a/nextcloud/docker-compose.yml +++ b/nextcloud/docker-compose.yml @@ -44,7 +44,7 @@ services: - 'root:/var/www/html' db: - image: 'postgres:13.3-alpine' + image: 'postgres:13.2-alpine' restart: 'always' environment: @@ -55,7 +55,7 @@ services: - 'db-data:/var/lib/postgresql/data' redis: - image: 'redis:6.2.4-alpine' + image: 'redis:6.2.2-alpine' restart: 'always' healthcheck: diff --git a/nginx/.env.example b/nginx/.env.example index d63211e..81e3e0d 100644 --- a/nginx/.env.example +++ b/nginx/.env.example @@ -63,3 +63,9 @@ GITEA_HOST=gitea_app_1 PODGRAB_DOMAIN= ### Hostname PODGRAB_HOST=podgrab_app_1 + +## Woodpecker +### Domain name +WOODPECKER_DOMAIN= +### Hostname +WOODPECKER_HOST=woodpecker_app_1 diff --git a/nginx/nginx/Dockerfile b/nginx/nginx/Dockerfile index 2f040c3..19a359b 100644 --- a/nginx/nginx/Dockerfile +++ b/nginx/nginx/Dockerfile @@ -1,4 +1,4 @@ -FROM nginx:1.21.0-alpine +FROM nginx:1.20.0-alpine COPY entrypoint.sh /entrypoint.sh COPY renew /etc/periodic/weekly/renew diff --git a/nginx/sites-available/woodpecker.conf.template b/nginx/sites-available/woodpecker.conf.template new file mode 100644 index 0000000..af0f386 --- /dev/null +++ b/nginx/sites-available/woodpecker.conf.template @@ -0,0 +1,22 @@ +server { + # SSL Key locations + ssl_certificate /etc/letsencrypt/live/${WOODPECKER_DOMAIN}/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/${WOODPECKER_DOMAIN}/privkey.pem; + + listen ${HTTPS_PORT} ssl; + listen [::]:${HTTPS_PORT} ssl; + server_name ${WOODPECKER_DOMAIN}; + + location / { + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $http_host; + + proxy_pass http://${WOODPECKER_HOST}:8000; + proxy_redirect off; + proxy_http_version 1.1; + proxy_buffering off; + + chunked_transfer_encoding off; + } +} diff --git a/woodpecker/.env.example b/woodpecker/.env.example new file mode 100644 index 0000000..0bc284b --- /dev/null +++ b/woodpecker/.env.example @@ -0,0 +1,16 @@ +# Allow all users to use it +DRONE_OPEN=true +# Drone needs to know its own location +DRONE_HOST= +# The same, but without the https in front of it +DRONE_SERVER= +# Shared secret to communicate with agents +DRONE_SECRET= + +# Tell Drone to use postgres +DRONE_DATABASE_DRIVER=postgres +DRONE_DATABASE_DATASOURCE=postgres://woodpecker:woodpecker@db:5432/woodpecker?sslmode=disable + +# These are just a guess based on the documentation +DRONE_GITEA=true +DRONE_GITEA_URL= diff --git a/woodpecker/docker-compose.yml b/woodpecker/docker-compose.yml new file mode 100644 index 0000000..a0d3405 --- /dev/null +++ b/woodpecker/docker-compose.yml @@ -0,0 +1,67 @@ +version: '2.4' + +services: + # The main drone instance + app: + # Latest version as of writing this document + image: 'laszlocloud/woodpecker-server:v0.13.0' + restart: 'always' + + depends_on: + db: + condition: 'service_healthy' + + env_file: + - '.env' + networks: + - 'default' + - 'nginx' + ports: + # Used to communicate with the agents (I think) + - '9000:9000' + volumes: + - 'server-data:/var/lib/drone' + + # Database for the server + db: + image: 'postgres:13.2-alpine' + restart: 'always' + + healthcheck: + test: 'pg_isready -U woodpecker' + interval: '30s' + timeout: '5s' + retries: 3 + start_period: '0s' + + environment: + - 'POSTGRES_DB=woodpecker' + - 'POSTGRES_USER=woodpecker' + - 'POSTGRES_PASSWORD=woodpecker' + volumes: + - 'db-data:/var/lib/postgresql/data' + + # We can deploy more agents by using the scale command + # Each agent can do one parallel build by default + agent: + image: 'laszlocloud/woodpecker-agent:v0.13.0' + restart: 'always' + command: 'agent' + + depends_on: + app: + condition: 'service_started' + + environment: + - 'DRONE_SERVER=${DRONE_SERVER}' + - 'DRONE_SECRET=${DRONE_SECRET}' + volumes: + - '/var/run/docker.sock:/var/run/docker.sock' + +networks: + nginx: + external: true + +volumes: + db-data: + server-data: