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: