diff --git a/paperlessngx/.env b/paperlessngx/.env new file mode 100755 index 0000000..4b03175 --- /dev/null +++ b/paperlessngx/.env @@ -0,0 +1,34 @@ +#GLOBAL SETTINGS +COMPOSE_HTTP_TIMEOUT=120 +COMPOSE_IGNORE_ORPHANS=1 +DOCKER_CONFIGS=. +DOCKERGID=999 +DOCKERHOSTNAME=DockerServer2 +DOCKERLOGGING_MAXFILE=10 +DOCKERLOGGING_MAXSIZE=200k +SERVERIP=192.168.1.32 +PGID=1000 +PUID=1000 +UMASK=000 +TZ=America/Chicago +BACKUP_DIR=/mnt/truenas-backups +MEDIA_DIR=/mnt/truenas-media +STORAGE_DIR=/mnt/truenas-storage + +#PAPERLESS +PAPERLESS_URL=https://paperless.akanealw.com +PAPERLESS_SECRET_KEY=fo5soje2caiQu9eed4kuwakeevae5x +PAPERLESS_TIME_ZONE=America/Chicago +PAPERLESS_OCR_LANGUAGE=eng +PAPERLESS_DBPASS=ieta6iuGhoorooluGieceekahFeic4 +PAPERLESS_ADMIN_USER=akanealw +PAPERLESS_ADMIN_PASSWORD=booshooSekae0eid9Vatohgei1phoo +PAPERLESS_ADMIN_MAIL=akanealw@gmail.com +PAPERLESS_OCR_USER_ARGS={"tesseract_timeout": 250, "continue_on_soft_render_error": true} +PAPERLESS_OCR_MODE=redo +PAPERLESS_OCR_CLEAN=clean +PAPERLESS_TASK_WORKERS=2 +PAPERLESS_CONSUMER_RECURSIVE=true +PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=true +PAPERLESS_CONSUMER_POLLING=180 +PAPERLESS_FILENAME_FORMAT={created_year}/{correspondent}/{title} diff --git a/paperlessngx/compose.yml b/paperlessngx/compose.yml new file mode 100755 index 0000000..23cc34c --- /dev/null +++ b/paperlessngx/compose.yml @@ -0,0 +1,81 @@ +version: '3' + +services: + paperless-redis: + container_name: paperless-redis + image: docker.io/library/redis:7 + networks: + - paperless + restart: always + volumes: + - ${DOCKER_CONFIGS}/redis/data:/data + + paperless-postgres: + container_name: paperless-postgres + image: docker.io/library/postgres:15 + networks: + - paperless + restart: always + volumes: + - ${DOCKER_CONFIGS}/postgres/data:/var/lib/postgresql/data + environment: + POSTGRES_DB: paperless + POSTGRES_USER: paperless + POSTGRES_PASSWORD: ieta6iuGhoorooluGieceekahFeic4 + + paperless: + container_name: paperless + image: ghcr.io/paperless-ngx/paperless-ngx:latest + restart: always + depends_on: + - paperless-postgres + - paperless-redis + - paperless-gotenberg + - paperless-tika + networks: + - paperless + - reverse-proxy + ports: + - "8111:8000" + healthcheck: + test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"] + interval: 30s + timeout: 10s + retries: 5 + volumes: + - ${DOCKER_CONFIGS}/data:/usr/src/paperless/data + - ${DOCKER_CONFIGS}/data:/usr/src/paperless/media + - /mnt/truenas-storage/Documents/Paperless/Export:/usr/src/paperless/export + - /mnt/truenas-storage/Documents/Paperless/Input:/usr/src/paperless/consume + env_file: .env + environment: + PAPERLESS_REDIS: redis://paperless-redis:6379 + PAPERLESS_DBHOST: paperless-postgres + PAPERLESS_TIKA_ENABLED: 1 + PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://paperless-gotenberg:3000 + PAPERLESS_TIKA_ENDPOINT: http://paperless-tika:9998 + + paperless-gotenberg: + container_name: paperless-gotenberg + image: docker.io/gotenberg/gotenberg:7.10 + networks: + - paperless + restart: always + command: + - "gotenberg" + - "--chromium-disable-javascript=true" + - "--chromium-allow-list=file:///tmp/.*" + + paperless-tika: + container_name: paperless-tika + image: ghcr.io/paperless-ngx/tika:latest + networks: + - paperless + restart: always + +networks: + paperless: + name: paperless + reverse-proxy: + name: reverse-proxy + external: true diff --git a/photoprism/.env b/photoprism/.env new file mode 100755 index 0000000..e718183 --- /dev/null +++ b/photoprism/.env @@ -0,0 +1,14 @@ +#GLOBAL SETTINGS +COMPOSE_HTTP_TIMEOUT=120 +COMPOSE_IGNORE_ORPHANS=1 +DOCKER_CONFIGS=. +DOCKERGID=999 +DOCKERHOSTNAME=DockerServer2 +DOCKERLOGGING_MAXFILE=10 +DOCKERLOGGING_MAXSIZE=200k +SERVERIP=192.168.1.32 +PGID=1000 +PUID=1000 +UMASK=000 +TZ=America/Chicago +STORAGE_DIR=/mnt/truenas-storage diff --git a/photoprism/compose.yml b/photoprism/compose.yml new file mode 100644 index 0000000..e4d3622 --- /dev/null +++ b/photoprism/compose.yml @@ -0,0 +1,81 @@ +version: '3.5' +services: + photoprism: + container_name: photoprism + image: photoprism/photoprism:latest + restart: always + stop_grace_period: 10s + depends_on: + - photoprism-mariadb + security_opt: + - seccomp:unconfined + - apparmor:unconfined + networks: + - photoprism + - reverse-proxy + ports: + - "2342:2342" # HTTP port (host:container) + environment: + PHOTOPRISM_ADMIN_USER: "admin" # admin login username + PHOTOPRISM_ADMIN_PASSWORD: "sueB3aoNg0eot4Iluinaeh5lah8Ais" # initial admin password (8-72 characters) + PHOTOPRISM_AUTH_MODE: "public" # authentication mode (public, password) + PHOTOPRISM_SITE_URL: "http://192.168.1.32:2342/" # server URL in the format "http(s)://domain.name(:port)/(path)" + PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available + PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available + PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) + PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) + PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic + PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) + PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features + PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup + PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server + PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API + PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow + PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) + PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) + PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support + PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images + PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance) + PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) + PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) + PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) + PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance + PHOTOPRISM_DATABASE_SERVER: "photoprism-mariadb:3306" # MariaDB or MySQL database server (hostname:port) + PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name + PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name + PHOTOPRISM_DATABASE_PASSWORD: "photoprism" # MariaDB or MySQL database user password + PHOTOPRISM_SITE_CAPTION: "PhotoPrism" + PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description + PHOTOPRISM_SITE_AUTHOR: "" # meta site author + working_dir: "/photoprism" # do not change or remove + volumes: + - "${STORAGE_DIR}/Pictures:/photoprism/originals" # Original media files (DO NOT REMOVE) + - "${DOCKER_CONFIGS}/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) + + photoprism-mariadb: + container_name: photoprism-mariadb + image: mariadb:10.11 + restart: unless-stopped + stop_grace_period: 5s + security_opt: + - seccomp:unconfined + - apparmor:unconfined + command: --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120 + volumes: + - "${DOCKER_CONFIGS}/database:/var/lib/mysql" + environment: + MARIADB_AUTO_UPGRADE: "1" + MARIADB_INITDB_SKIP_TZINFO: "1" + MARIADB_DATABASE: "photoprism" + MARIADB_USER: "photoprism" + MARIADB_PASSWORD: "photoprism" + MARIADB_ROOT_PASSWORD: "eengeYoowoh9loh5zahngoh1aoye4b" + networks: + - photoprism + +networks: + photoprism: + name: photoprism + reverse-proxy: + name: reverse-proxy + external: true diff --git a/piped/.env b/piped/.env new file mode 100644 index 0000000..7bb54ee --- /dev/null +++ b/piped/.env @@ -0,0 +1,12 @@ +#GLOBAL SETTINGS +COMPOSE_HTTP_TIMEOUT=120 +COMPOSE_IGNORE_ORPHANS=1 +DOCKER_CONFIGS=. +DOCKERGID=999 +DOCKERHOSTNAME=DockerServer2 +DOCKERLOGGING_MAXFILE=10 +DOCKERLOGGING_MAXSIZE=200k +PGID=1000 +PUID=1000 +UMASK=000 +TZ=America/Chicago diff --git a/piped/compose.yml b/piped/compose.yml new file mode 100644 index 0000000..d0c7130 --- /dev/null +++ b/piped/compose.yml @@ -0,0 +1,75 @@ +version: '3' + +services: + piped: + container_name: piped + image: 1337kavin/piped:latest + depends_on: + - piped-postgres + networks: + - piped + restart: always + volumes: + - ${DOCKER_CONFIGS}/config/config.properties:/app/config.properties:ro + + piped-frontend: + container_name: piped-frontend + image: 1337kavin/piped-frontend:latest + entrypoint: ash -c 'sed -i s/pipedapi.kavin.rocks/pipedapi.akanealw.com/g /usr/share/nginx/html/assets/* && /docker-entrypoint.sh && nginx -g "daemon off;"' + networks: + - piped + depends_on: + - piped + restart: always + + piped-nginx: + container_name: piped-nginx + image: nginx:mainline-alpine + depends_on: + - piped + - piped-proxy + - piped-frontend + networks: + - piped + - reverse-proxy + ports: + - 8585:80 + restart: always + volumes: + - ${DOCKER_CONFIGS}/config/nginx.conf:/etc/nginx/nginx.conf:ro + - ${DOCKER_CONFIGS}/config/pipedapi.conf:/etc/nginx/conf.d/pipedapi.conf:ro + - ${DOCKER_CONFIGS}/config/pipedproxy.conf:/etc/nginx/conf.d/pipedproxy.conf:ro + - ${DOCKER_CONFIGS}/config/pipedfrontend.conf:/etc/nginx/conf.d/pipedfrontend.conf:ro + - ${DOCKER_CONFIGS}/config/ytproxy.conf:/etc/nginx/snippets/ytproxy.conf:ro + - ${DOCKER_CONFIGS}/piped-proxy:/var/run/ytproxy + + piped-postgres: + container_name: piped-postgres + image: postgres:15 + environment: + - POSTGRES_DB=piped + - POSTGRES_USER=piped + - POSTGRES_PASSWORD=Vee0caiv8ieceeDae1aepheirophai + networks: + - piped + restart: always + volumes: + - ${DOCKER_CONFIGS}/data/db:/var/lib/postgresql/data + + piped-proxy: + container_name: piped-proxy + image: 1337kavin/piped-proxy:latest + environment: + - UDS=1 + networks: + - piped + restart: always + volumes: + - ${DOCKER_CONFIGS}/piped-proxy:/app/socket + +networks: + piped: + name: piped + reverse-proxy: + name: reverse-proxy + external: true diff --git a/piped/config/config.properties b/piped/config/config.properties new file mode 100755 index 0000000..13e9419 --- /dev/null +++ b/piped/config/config.properties @@ -0,0 +1,37 @@ +# The port to Listen on. +PORT: 8080 + +# The number of workers to use for the server +HTTP_WORKERS: 2 + +# Proxy +PROXY_PART: https://pipedproxy.akanealw.com + +# Outgoing HTTP Proxy - eg: 127.0.0.1:8118 +#HTTP_PROXY: 127.0.0.1:8118 + +# Captcha Parameters +CAPTCHA_BASE_URL: https://api.capmonster.cloud/ +CAPTCHA_API_KEY: INSERT_HERE + +# Public API URL +API_URL: https://pipedapi.akanealw.com + +# Public Frontend URL +FRONTEND_URL: https://piped.akanealw.com + +# Enable haveibeenpwned compromised password API +COMPROMISED_PASSWORD_CHECK: true + +# Disable Registration +DISABLE_REGISTRATION: false + +# Feed Retention Time in Days +FEED_RETENTION: 30 + +# Hibernate properties +hibernate.connection.url: jdbc:postgresql://piped-postgres:5432/piped +hibernate.connection.driver_class: org.postgresql.Driver +hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect +hibernate.connection.username: piped +hibernate.connection.password: Vee0caiv8ieceeDae1aepheirophai diff --git a/piped/config/nginx.conf b/piped/config/nginx.conf new file mode 100755 index 0000000..2ba7091 --- /dev/null +++ b/piped/config/nginx.conf @@ -0,0 +1,33 @@ +user root; +worker_processes auto; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + server_names_hash_bucket_size 128; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + tcp_nodelay on; + + keepalive_timeout 65; + + resolver 127.0.0.11 ipv6=off valid=10s; + + include /etc/nginx/conf.d/*.conf; +} diff --git a/piped/config/pipedapi.conf b/piped/config/pipedapi.conf new file mode 100755 index 0000000..c8e136c --- /dev/null +++ b/piped/config/pipedapi.conf @@ -0,0 +1,15 @@ +proxy_cache_path /tmp/pipedapi_cache levels=1:2 keys_zone=pipedapi:4m max_size=2g inactive=60m use_temp_path=off; + +server { + listen 80; + server_name pipedapi.akanealw.com; + + set $backend "http://piped:8080"; + + location / { + proxy_cache pipedapi; + proxy_pass $backend; + proxy_http_version 1.1; + proxy_set_header Connection "keep-alive"; + } +} diff --git a/piped/config/pipedfrontend.conf b/piped/config/pipedfrontend.conf new file mode 100755 index 0000000..e9d8de2 --- /dev/null +++ b/piped/config/pipedfrontend.conf @@ -0,0 +1,12 @@ +server { + listen 80; + server_name piped.akanealw.com; + + set $backend "http://piped-frontend:80"; + + location / { + proxy_pass $backend; + proxy_http_version 1.1; + proxy_set_header Connection "keep-alive"; + } +} diff --git a/piped/config/pipedproxy.conf b/piped/config/pipedproxy.conf new file mode 100755 index 0000000..3dbdb3d --- /dev/null +++ b/piped/config/pipedproxy.conf @@ -0,0 +1,14 @@ +server { + listen 80; + server_name pipedproxy.akanealw.com; + + location ~ (/videoplayback|/api/v4/|/api/manifest/) { + include snippets/ytproxy.conf; + add_header Cache-Control private always; + } + + location / { + include snippets/ytproxy.conf; + add_header Cache-Control "public, max-age=604800"; + } +} diff --git a/piped/config/ytproxy.conf b/piped/config/ytproxy.conf new file mode 100755 index 0000000..4fd36f1 --- /dev/null +++ b/piped/config/ytproxy.conf @@ -0,0 +1,18 @@ +proxy_buffering on; +proxy_buffers 1024 16k; +proxy_set_header X-Forwarded-For ""; +proxy_set_header CF-Connecting-IP ""; +proxy_hide_header "alt-svc"; +sendfile on; +sendfile_max_chunk 512k; +tcp_nopush on; +aio threads=default; +aio_write on; +directio 16m; +proxy_hide_header Cache-Control; +proxy_hide_header etag; +proxy_http_version 1.1; +proxy_set_header Connection keep-alive; +proxy_max_temp_file_size 32m; +access_log off; +proxy_pass http://unix:/var/run/ytproxy/actix.sock; diff --git a/rss-bridge/.env b/rss-bridge/.env new file mode 100644 index 0000000..7bb54ee --- /dev/null +++ b/rss-bridge/.env @@ -0,0 +1,12 @@ +#GLOBAL SETTINGS +COMPOSE_HTTP_TIMEOUT=120 +COMPOSE_IGNORE_ORPHANS=1 +DOCKER_CONFIGS=. +DOCKERGID=999 +DOCKERHOSTNAME=DockerServer2 +DOCKERLOGGING_MAXFILE=10 +DOCKERLOGGING_MAXSIZE=200k +PGID=1000 +PUID=1000 +UMASK=000 +TZ=America/Chicago diff --git a/rss-bridge/compose.yml b/rss-bridge/compose.yml new file mode 100644 index 0000000..15bc5e7 --- /dev/null +++ b/rss-bridge/compose.yml @@ -0,0 +1,18 @@ +version: '3' + +services: + rss-bridge: + container_name: rss-bridge + image: rssbridge/rss-bridge:latest + networks: + - reverse-proxy + ports: + - 3006:80 + restart: always + volumes: + - ${DOCKER_CONFIGS}/config:/config + +networks: + reverse-proxy: + name: reverse-proxy + external: true diff --git a/rss-bridge/config/config.ini.php b/rss-bridge/config/config.ini.php new file mode 100755 index 0000000..9499c60 --- /dev/null +++ b/rss-bridge/config/config.ini.php @@ -0,0 +1,152 @@ +; DO NOT REMOVE THIS LINE + +; This file contains the default settings for RSS-Bridge. Do not change this +; file, it will be replaced on the next update of RSS-Bridge! You can specify +; your own configuration in 'config.ini.php' (copy this file). + +[system] + +; Only these bridges are available for feed production +; How to enable all bridges: enabled_bridges[] = * +enabled_bridges[] = CssSelectorBridge +enabled_bridges[] = FeedMerge +enabled_bridges[] = FeedReducerBridge +enabled_bridges[] = Filter +enabled_bridges[] = PCGamer +enabled_bridges[] = Reddit +enabled_bridges[] = SoundcloudBridge +enabled_bridges[] = Telegram +enabled_bridges[] = ThePirateBay +enabled_bridges[] = TikTokBridge +enabled_bridges[] = Twitch +enabled_bridges[] = Twitter +enabled_bridges[] = Youtube +enabled_bridges[] = YouTubeCommunityTabBridge + +; Defines the timezone used by RSS-Bridge +; Find a list of supported timezones at +; https://www.php.net/manual/en/timezones.php +; timezone = "UTC" (default) +timezone = "UTC" + +; Display a system message to users. +message = "" + +; Whether to enable debug mode. +enable_debug_mode = false + +; Enable debug mode only for these permitted ip addresses +; debug_mode_whitelist[] = 127.0.0.1 +; debug_mode_whitelist[] = 192.168.1.10 + +; Whether to enable maintenance mode. If enabled, feed requests receive 503 Service Unavailable +enable_maintenance_mode = false + +[http] +timeout = 60 +useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0" + +; Max http response size in MB +max_filesize = 20 + +[cache] + +; Cache type: file, sqlite, memcached, array, null +type = "file" + +; Allow users to specify custom timeout for specific requests. +; true = enabled +; false = disabled (default) +custom_timeout = false + +[admin] +; Advertise an email address where people can reach the administrator. +; This address is displayed on the main page, visible to everyone! +; "" = Disabled (default) +email = "" + +; Advertise a contact Telegram url e.g. "https://t.me/elegantobjects" +telegram = "" + +; Show Donation information for bridges if available. +; This will display a 'Donate' link on the bridge view +; and a "Donate" button in the HTML view of the bridges feed. +; true = enabled (default) +; false = disabled +donations = true + +[proxy] + +; Sets the proxy url (i.e. "tcp://192.168.0.0:32") +; "" = Proxy disabled (default) +url = "" + +; Sets the proxy name that is shown on the bridge instead of the proxy url. +; "" = Show proxy url +name = "Hidden proxy name" + +; Allow users to disable proxy usage for specific requests. +; true = enabled +; false = disabled (default) +by_bridge = false + +[authentication] + +; Enables basic authentication for all requests to this RSS-Bridge instance. +; +; Warning: You'll have to upgrade existing feeds after enabling this option! +; +; true = enabled +; false = disabled (default) +enable = false + +username = "admin" + +; The password cannot be the empty string if authentication is enabled. +password = "" + +; This will be used only for actions that require privileged access +access_token = "" + +[error] + +; Defines how error messages are returned by RSS-Bridge +; +; "feed" = As part of the feed (default) +; "http" = As HTTP error message +; "none" = No errors are reported +output = "feed" + +; Defines how often an error must occur before it is reported to the user +report_limit = 1 + +; --- Cache specific configuration --------------------------------------------- + +[FileCache] +; The root folder to store files in. +; "" = Use the cache folder in the repository (default) +path = "" +; Whether to actually delete files when purging. Can be useful to turn off to increase performance. +enable_purge = true + +[SQLiteCache] +; Filepath of the sqlite db file +file = "cache.sqlite" +; Whether to actually delete data when purging +enable_purge = true +; Busy wait in ms before timing out +timeout = 5000 + +[MemcachedCache] +host = "localhost" +port = 11211 + +; --- Bridge specific configuration ------ + +[DiscogsBridge] + +; Sets the personal access token for interactions with Discogs. When +; provided, images can be included in generated feeds. +; +; "" = no token used (default) +personal_access_token = "" diff --git a/shlink/.env b/shlink/.env new file mode 100644 index 0000000..7bb54ee --- /dev/null +++ b/shlink/.env @@ -0,0 +1,12 @@ +#GLOBAL SETTINGS +COMPOSE_HTTP_TIMEOUT=120 +COMPOSE_IGNORE_ORPHANS=1 +DOCKER_CONFIGS=. +DOCKERGID=999 +DOCKERHOSTNAME=DockerServer2 +DOCKERLOGGING_MAXFILE=10 +DOCKERLOGGING_MAXSIZE=200k +PGID=1000 +PUID=1000 +UMASK=000 +TZ=America/Chicago diff --git a/shlink/compose.yml b/shlink/compose.yml new file mode 100644 index 0000000..149a10d --- /dev/null +++ b/shlink/compose.yml @@ -0,0 +1,58 @@ +version: '3' + +services: + shlink-server: + container_name: shlink-server + image: shlinkio/shlink:stable + environment: + - TZ=${TZ} + - DEFAULT_DOMAIN=aknlw.com + - IS_HTTPS_ENABLED=true + - GEOLITE_LICENSE_KEY=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 + - DB_DRIVER=maria + - DB_USER=shlink + - DB_NAME=shlink + - DB_PASSWORD=OoDahdohv6 + - DB_HOST=shlink-database + - INITIAL_API_KEY=f0dc4f0c-6d4e-47a3-ad65-d39acca81435 + depends_on: + - shlink-database + networks: + - shlink + - reverse-proxy + ports: + - 8380:8080 + restart: always + + shlink-database: + container_name: shlink-database + image: mariadb:10.8 + environment: + - MARIADB_ROOT_PASSWORD=coo6Pooch2 + - MARIADB_DATABASE=shlink + - MARIADB_USER=shlink + - MARIADB_PASSWORD=OoDahdohv6 + networks: + - shlink + restart: always + volumes: + - ${DOCKER_CONFIGS}/mariadb/db_data:/var/lib/mysql + + shlink-web-client: + container_name: shlink-web-client + image: shlinkio/shlink-web-client:3.1.0 + ports: + - 8381:80 + networks: + - shlink + - reverse-proxy + restart: always + volumes: + - ${DOCKER_CONFIGS}/servers.json:/usr/share/nginx/html/servers.json + +networks: + shlink: + name: shlink + reverse-proxy: + name: reverse-proxy + external: true diff --git a/shlink/servers.json b/shlink/servers.json new file mode 100755 index 0000000..ef53c72 --- /dev/null +++ b/shlink/servers.json @@ -0,0 +1,7 @@ +[ + { + "name": "aknlw.com", + "url": "https://aknlw.com", + "apiKey": "eiy5ees0AiVoh8eeWa7U" + } +]