diff --git a/firefly/docker-compose.yml b/firefly/docker-compose.yml index 7b16c61..73a8f98 100644 --- a/firefly/docker-compose.yml +++ b/firefly/docker-compose.yml @@ -1,4 +1,4 @@ -version: '2.4' +version: '2.8' services: app: @@ -32,7 +32,6 @@ services: db: image: 'postgres:13.2-alpine' restart: 'always' - healthcheck: test: 'pg_isready -U firefly' interval: '10s' @@ -50,7 +49,6 @@ services: redis: image: 'redis:6.0.12-alpine' restart: 'always' - healthcheck: test: 'redis-cli -h localhost ping' interval: '10s' diff --git a/koel/.env.example b/koel/.env.example index 9ba0882..d58e408 100644 --- a/koel/.env.example +++ b/koel/.env.example @@ -12,7 +12,7 @@ DB_HOST=db DB_PORT=3306 DB_DATABASE=koel DB_USERNAME=koel -DB_PASSWORD=koel +DB_PASSWORD=changeme # A random 32-char string. You can leave this empty if use php artisan koel:init. APP_KEY= diff --git a/koel/docker-compose.yml b/koel/docker-compose.yml index 27975a8..19d6e1a 100644 --- a/koel/docker-compose.yml +++ b/koel/docker-compose.yml @@ -1,22 +1,14 @@ -version: '2.4' +version: '3.5' services: app: - # This repository sadly only has a 'latest' flag image: 'hyzual/koel:latest' restart: 'always' - healthcheck: - test: 'curl -f localhost:80 || exit 1' - interval: '1m' - timeout: '10s' - retries: 3 - start_period: '10s' depends_on: - db: - # Haven't found a good MySQL healthcheck yet - condition: 'service_started' - + - 'db' + labels: + - 'com.centurylinklabs.watchtower.enable=true' networks: - 'default' - 'nginx' @@ -26,15 +18,17 @@ services: - 'music:/music' db: - image: 'mysql:8.0.24' + image: 'mysql:8' restart: 'always' command: '--default-authentication-plugin=mysql_native_password' environment: - 'MYSQL_DATABASE=koel' - - 'MYSQL_USER=koel' - - 'MYSQL_PASSWORD=koel' - - 'MYSQL_RANDOM_ROOT_PASSWORD=yes' + - 'MYSQL_PASSWORD=$DB_PASSWORD' + - 'MYSQL_ROOT_PASSWORD=$DB_PASSWORD' + - 'MYSQL_USER=$DB_USERNAME' + labels: + - 'com.centurylinklabs.watchtower.enable=true' volumes: - 'db-data:/var/lib/mysql' diff --git a/minecraft/fabric/docker-compose.yml b/minecraft/fabric/docker-compose.yml index 440ad2b..28d43bf 100644 --- a/minecraft/fabric/docker-compose.yml +++ b/minecraft/fabric/docker-compose.yml @@ -1,4 +1,4 @@ -version: '2.0' +version: '3.5' services: app: build: diff --git a/minecraft/forge/docker-compose.yml b/minecraft/forge/docker-compose.yml index 95ba6e4..f8077d2 100644 --- a/minecraft/forge/docker-compose.yml +++ b/minecraft/forge/docker-compose.yml @@ -1,4 +1,4 @@ -version: '2.0' +version: '3.5' services: app: build: diff --git a/minecraft/papermc/docker-compose.yml b/minecraft/papermc/docker-compose.yml index c9a41bc..fd4afec 100644 --- a/minecraft/papermc/docker-compose.yml +++ b/minecraft/papermc/docker-compose.yml @@ -1,4 +1,4 @@ -version: '2.0' +version: '3.5' services: app: build: @@ -7,7 +7,7 @@ services: - 'BASE_IMAGE' - 'MC_VERSION' - 'PAPERMC_VERSION' - image: 'localhost:5000/mc-papermc:${MC_VERSION}-${PAPERMC_VERSION}' + image: 'chewingbever/mc-papermc:${MC_VERSION}-${PAPERMC_VERSION}' restart: 'always' # Needed to interact with server console diff --git a/miniflux/db.env.example b/miniflux/db.env.example new file mode 100644 index 0000000..79ebaff --- /dev/null +++ b/miniflux/db.env.example @@ -0,0 +1,3 @@ +POSTGRES_DB=miniflux +POSTGRES_USER=miniflux +POSTGRES_PASSWORD=changeme diff --git a/miniflux/docker-compose.yml b/miniflux/docker-compose.yml index 24aae5a..4a59057 100644 --- a/miniflux/docker-compose.yml +++ b/miniflux/docker-compose.yml @@ -1,44 +1,28 @@ -version: '2.4' +version: '3.5' services: app: - image: 'miniflux/miniflux:2.0.29' + image: 'miniflux/miniflux:latest' restart: 'always' depends_on: - db: - condition: 'service_healthy' - healthcheck: - test: 'wget --no-verbose --tries=1 --spider http://localhost:8080/ || exit 1' - interval: '1m' - timeout: '5s' - retries: 3 - start_period: '5s' - + - 'db' env_file: - - '.env' - environment: - # This is always the same, so we just put it here - - 'DATABASE_URL=postgres://miniflux:miniflux@db/miniflux?sslmode=disable' + - 'miniflux.env' + labels: + - 'com.centurylinklabs.watchtower.enable=true' networks: - 'default' - 'nginx' db: - image: 'postgres:13.2-alpine' + image: 'postgres:13-alpine' restart: 'always' - healthcheck: - test: 'pg_isready -U miniflux' - interval: '10s' - timeout: '5s' - retries: 5 - start_period: '0s' - - environment: - - 'POSTGRES_DB=miniflux' - - 'POSTGRES_USER=miniflux' - - 'POSTGRES_PASSWORD=miniflux' + env_file: + - 'db.env' + labels: + - 'com.centurylinklabs.watchtower.enable=true' volumes: - 'db-data:/var/lib/postgresql/data' diff --git a/miniflux/.env.example b/miniflux/miniflux.env.example similarity index 63% rename from miniflux/.env.example rename to miniflux/miniflux.env.example index 0a429a9..161f6c8 100644 --- a/miniflux/.env.example +++ b/miniflux/miniflux.env.example @@ -1,4 +1,5 @@ # Database settings +DATABASE_URL=postgres://miniflux:changeme@db/miniflux?sslmode=disable RUN_MIGRATIONS=1 # Auto-create admin user diff --git a/monica/.env.example b/monica/.env.example deleted file mode 100644 index 27ad3e7..0000000 --- a/monica/.env.example +++ /dev/null @@ -1,168 +0,0 @@ -# -# Welcome, friend ❤. Thanks for trying out Monica. We hope you'll have fun. -# - -# Two choices: local|production. Use local if you want to install Monica as a -# development version. Use production otherwise. -APP_ENV=production - -# true if you want to show debug information on errors. For production, put this -# to false. -APP_DEBUG=false - -# The encryption key. This is the most important part of the application. Keep -# this secure otherwise, everyone will be able to access your application. -# Must be 32 characters long exactly. -# Use `php artisan key:generate` or `pwgen -s 32 1` to generate a random key. -APP_KEY=ChangeMeBy32KeyLengthOrGenerated - -# Prevent information leakage by referring to IDs with hashIds instead of -# the actual IDs used in the database. -HASH_SALT=ChangeMeBy20+KeyLength -HASH_LENGTH=18 - -# The URL of your application. -APP_URL=http://localhost - -# Force using APP_URL as base url of your application. -# You should not need this, unless you are using subdirectory config. -APP_FORCE_URL=false - -# Database information -# To keep this information secure, we urge you to change the default password -# Currently only "mysql" compatible servers are working -DB_CONNECTION=mysql -DB_HOST=db -DB_PORT=3306 -# You can use mysql unix socket if available, it overrides DB_HOST and DB_PORT values. -#DB_UNIX_SOCKET=/var/run/mysqld/mysqld.sock -DB_DATABASE=monica -DB_USERNAME=monica -DB_PASSWORD=monica -DB_PREFIX= -DB_TEST_HOST=127.0.0.1 -DB_TEST_DATABASE=monica_test -DB_TEST_USERNAME=homestead -DB_TEST_PASSWORD=secret - -# Use utf8mb4 database charset format to support emoji characters -# ⚠ be sure your DBMS supports utf8mb4 format -DB_USE_UTF8MB4=true - -# Mail credentials used to send emails from the application. -MAIL_MAILER=smtp -MAIL_HOST=mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME= -MAIL_PASSWORD= -MAIL_ENCRYPTION= -# Outgoing emails will be sent with these identity -MAIL_FROM_ADDRESS= -MAIL_FROM_NAME="Monica instance" -# New registration notification sent to this email -APP_EMAIL_NEW_USERS_NOTIFICATION= - -# Ability to disable signups on your instance. -# Can be true or false. Default to false. -APP_DISABLE_SIGNUP=true - -# Enable user email verification. -APP_SIGNUP_DOUBLE_OPTIN=false - -# Set trusted proxy IP addresses. -# To trust all proxies that connect directly to your server, use a "*". -# To trust one or more specific proxies that connect directly to your server, -# use a comma separated list of IP addresses. -APP_TRUSTED_PROXIES=* - -# Enable automatic cloudflare trusted proxy discover -APP_TRUSTED_CLOUDFLARE=false - -# Frequency of creation of new log files. Logs are written when an error occurs. -# Refer to config/logging.php for the possible values. -LOG_CHANNEL=daily - -# Error tracking. Specific to hosted version on .com. You probably don't need -# those. -SENTRY_SUPPORT=false -SENTRY_LARAVEL_DSN= - -# Send a daily ping to https://version.monicahq.com to check if a new version -# is available. When a new version is detected, you will have a message in the -# UI, as well as the release notes for the new changes. Can be true or false. -# Default to true. -CHECK_VERSION=true - -# Cache, session, and queue parameters -# ⚠ Change this only if you know what you are doing -#. Cache: database, file, memcached, redis, dynamodb -#. Session: file, cookie, database, apc, memcached, redis, array -#. Queue: sync, database, beanstalkd, sqs, redis -# If Queue is not set to 'sync', you'll have to set a queue worker -# See https://laravel.com/docs/5.7/queues#running-the-queue-worker -CACHE_DRIVER=redis -SESSION_DRIVER=file -SESSION_LIFETIME=120 -QUEUE_CONNECTION=sync - -# If you use redis, set the redis host or ip, like: -REDIS_HOST=redis - -# Maximum allowed size for uploaded files, in kilobytes. -# Make sure this is an integer, without commas or spaces. -DEFAULT_MAX_UPLOAD_SIZE=10240 - -# Maximum allowed storage size per account, in megabytes. -# Make sure this is an integer, without commas or spaces. -DEFAULT_MAX_STORAGE_SIZE=512 - -# Default filesystem to store uploaded files. -# Possible values: public|s3 -DEFAULT_FILESYSTEM=public - -# AWS keys for S3 when using this storage method -AWS_KEY= -AWS_SECRET= -AWS_REGION=us-east-1 -AWS_BUCKET= -AWS_SERVER= - -# Allow Two Factor Authentication feature on your instance -MFA_ENABLED=true - -# Enable DAV support -DAV_ENABLED=true - -# CLIENT ID and SECRET used for OAuth authentication -PASSPORT_PERSONAL_ACCESS_CLIENT_ID= -PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET= - -# Allow to access general statistics about your instance through a public API -# call -ALLOW_STATISTICS_THROUGH_PUBLIC_API_ACCESS=false - -# Indicates that each user in the instance must comply to international policies -# like CASL or GDPR -POLICY_COMPLIANT=true - -# Enable geolocation services -# This is used to translate addresses to GPS coordinates. -ENABLE_GEOLOCATION=false - -# API key for geolocation services -# We use LocationIQ (https://locationiq.com/) to translate addresses to -# latitude/longitude coordinates. We could use Google instead but we don't -# want to give anything to Google, ever. -# LocationIQ offers 10,000 free requests per day. -LOCATION_IQ_API_KEY= - -# Enable weather on contact profile page -# Weather can only be fetched if we know longitude/latitude - this is why -# you also need to activate the geolocation service above to make it work -ENABLE_WEATHER=false - -# Access to weather data from darksky api -# https://darksky.net/dev/register -# Darksky provides an api with 1000 free API calls per day -# You need to enable the weather above if you provide an API key here. -DARKSKY_API_KEY= diff --git a/monica/docker-compose.yml b/monica/docker-compose.yml deleted file mode 100644 index cf6af26..0000000 --- a/monica/docker-compose.yml +++ /dev/null @@ -1,58 +0,0 @@ -version: '2.4' - -services: - app: - image: 'monica:2.20.0-apache' - restart: 'always' - - healthcheck: - test: 'curl -f localhost:8080 || exit 1' - interval: '1m' - timeout: '10s' - retries: 3 - start_period: '10s' - depends_on: - db: - condition: 'service_started' - redis: - condition: 'service_healthy' - - env_file: - - '.env' - networks: - - 'default' - - 'nginx' - volumes: - - 'data:/var/www/html/storage' - - db: - image: 'mysql:8.0.24' - restart: 'always' - command: '--default-authentication-plugin=mysql_native_password' - - environment: - - 'MYSQL_RANDOM_ROOT_PASSWORD=true' - - 'MYSQL_DATABASE=monica' - - 'MYSQL_USER=monica' - - 'MYSQL_PASSWORD=monica' - - volumes: - - 'db-data:/var/lib/mysql' - - redis: - image: 'redis:6.0.12-alpine' - restart: 'always' - - healthcheck: - test: 'redis-cli -h localhost ping' - interval: '10s' - timeout: '5s' - retries: 3 - -networks: - nginx: - external: true - -volumes: - data: - db-data: diff --git a/nextcloud/.env.example b/nextcloud/.env.example index 2c43195..526887b 100644 --- a/nextcloud/.env.example +++ b/nextcloud/.env.example @@ -2,7 +2,7 @@ POSTGRES_HOST=db POSTGRES_DB=nextcloud POSTGRES_USER=nextcloud -POSTGRES_PASSWORD=nextcloud +POSTGRES_PASSWORD=pass # Redis REDIS_HOST=redis diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml index 4ab2edb..b287465 100644 --- a/nextcloud/docker-compose.yml +++ b/nextcloud/docker-compose.yml @@ -1,24 +1,17 @@ -version: '2.4' +version: '3.5' services: app: - image: 'nextcloud:21.0.1-apache' + image: 'nextcloud:20-apache' restart: 'always' - healthcheck: - test: 'curl -f localhost || exit 1' - interval: '1m' - timeout: '10s' - retries: 3 - start_period: '10s' depends_on: - db: - condition: 'service_healthy' - redis: - condition: 'service_healthy' - + - 'db' + - 'redis' env_file: - '.env' + labels: + - 'com.centurylinklabs.watchtower.enable=true' networks: - 'default' - 'nginx' @@ -28,41 +21,40 @@ services: - 'root:/var/www/html' cron: - image: 'nextcloud:21.0.1-apache' - restart: 'always' + image: 'nextcloud:20-apache' entrypoint: '/cron.sh' + restart: 'always' depends_on: - app: - condition: 'service_healthy' - + - 'app' env_file: - '.env' + labels: + - 'com.centurylinklabs.watchtower.enable=true' volumes: - 'config:/var/www/html/config' - 'data:/var/www/html/data' - 'root:/var/www/html' db: - image: 'postgres:13.2-alpine' + image: 'postgres:13-alpine' restart: 'always' environment: - - 'POSTGRES_DB=nextcloud' - - 'POSTGRES_USER=nextcloud' - - 'POSTGRES_PASSWORD=nextcloud' + - 'POSTGRES_DB' + - 'POSTGRES_USER' + - 'POSTGRES_PASSWORD' + labels: + - 'com.centurylinklabs.watchtower.enable=true' volumes: - 'db-data:/var/lib/postgresql/data' redis: - image: 'redis:6.0.12-alpine' + image: 'redis:6-alpine' restart: 'always' - healthcheck: - test: 'redis-cli -h localhost ping' - interval: '10s' - timeout: '5s' - retries: 3 + labels: + - 'com.centurylinklabs.watchtower.enable=true' networks: nginx: diff --git a/portainer/docker-compose.yml b/portainer/docker-compose.yml index 88165b0..31b62b3 100644 --- a/portainer/docker-compose.yml +++ b/portainer/docker-compose.yml @@ -1,17 +1,12 @@ -version: '2.4' +version: '3.5' services: app: - image: 'portainer/portainer-ce:2.1.1-alpine' + image: 'portainer/portainer-ce:latest' restart: 'always' - healthcheck: - test: 'curl -f localhost:9000 || exit 1' - interval: '1m' - timeout: '10s' - retries: 3 - start_period: '10s' - + labels: + - 'com.centurylinklabs.watchtower.enable=true' networks: - 'nginx' ports: @@ -22,7 +17,8 @@ services: networks: nginx: - external: true + external: + name: 'nginx' volumes: data: diff --git a/tshock/.env.example b/tshock/.env.example index 0a562b3..fea30eb 100644 --- a/tshock/.env.example +++ b/tshock/.env.example @@ -1,15 +1,29 @@ -# What version of TShock to use +# Copyright (C) 2020 Jef Roosens + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# Build arguments RELEASE_TAG= -# What world size to create: -# 1 for small, 2 for medium, 3 for large +# Environment variables AUTOCREATE=2 -# Mount points for the data directories -# By default, it creates volumes -CONFIG_DIR=config -LOGS_DIR=logs -WORLDS_DIR=worlds +# Mount points +CONFIG_DIR= +LOGS_DIR= +WORLDS_DIR= -# The port to publish the server on +# Other PORT=7777 diff --git a/tshock/Dockerfile b/tshock/Dockerfile index c9f2d50..2c694c1 100644 --- a/tshock/Dockerfile +++ b/tshock/Dockerfile @@ -1,27 +1,49 @@ -FROM alpine:3.13.5 AS base +# Copyright (C) 2020 Jef Roosens + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +FROM alpine:latest AS base # Build arguments ARG RELEASE_TAG +# Add unzip & curl +RUN apk update && apk add --no-cache unzip curl + WORKDIR /terraria -RUN apk update && apk add --no-cache unzip curl && \ - curl -s "https://api.github.com/repos/Pryaxis/TShock/releases/tags/${RELEASE_TAG}" | \ - grep "browser_download_url" | \ - grep -o "https[^\"]\+" | \ - xargs curl -sLo tshock.zip && \ - unzip -d tshock tshock.zip && \ - rm tshock.zip +# Download & unzip +# TODO convert this to jq? +RUN curl -s "https://api.github.com/repos/Pryaxis/TShock/releases/tags/${RELEASE_TAG}" | \ +grep "browser_download_url" | \ +grep -o "https[^\"]\+" | \ +xargs curl -sLo tshock.zip && \ +unzip tshock.zip && \ +rm tshock.zip && \ +# Is there a better way to do this? +mv TShock* tshock -FROM mono:6.12.0.107 +FROM mono:latest WORKDIR /terraria COPY --from=base /terraria/tshock /terraria # Create worlds directory & symlink it RUN mkdir -p worlds logs config /root/.local/share/Terraria && \ - ln -s /terraria/worlds /root/.local/share/Terraria/Worlds +ln -s /terraria/worlds /root/.local/share/Terraria/Worlds ENTRYPOINT \ mono /terraria/TerrariaServer.exe \ diff --git a/tshock/README.md b/tshock/README.md index 8cda9d8..4351aa4 100644 --- a/tshock/README.md +++ b/tshock/README.md @@ -1,3 +1,23 @@ + + + # Build arguments The only required build argument is `RELEASE_TAG`. This is the GitHub tag of the release you wish to use. The releases can be found diff --git a/tshock/docker-compose.yml b/tshock/docker-compose.yml index 32181e7..31ad2a0 100644 --- a/tshock/docker-compose.yml +++ b/tshock/docker-compose.yml @@ -1,25 +1,37 @@ -version: '2.4' +# Copyright (C) 2020 Jef Roosens + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +version: '3.5' services: - app: + tshock: build: context: . args: - 'RELEASE_TAG=${RELEASE_TAG}' - image: 'chewingbever/terraria-tshock:${RELEASE_TAG}' - restart: 'always' + image: 'terraria-tshock:${RELEASE_TAG}' + + restart: 'unless-stopped' stdin_open: true tty: true environment: - - 'AUTOCREATE' + - AUTOCREATE ports: - '$PORT:7777' volumes: - '$CONFIG_DIR:/terraria/config' - '$LOGS_DIR:/terraria/logs' - '$WORLDS_DIR:/terraria/worlds' - -volumes: - config: - logs: - worlds: