This commit is contained in:
2026-07-06 21:07:17 +02:00
parent 0f3d0b7f49
commit 754eee0d32
73 changed files with 196 additions and 274 deletions
+5
View File
@@ -1,2 +1,7 @@
/*.tar.gz
infrastructure/services/**/env/*.env
infrastructure/services/**/config/*.env
!infrastructure/services/**/env/*.env.example
!infrastructure/services/**/config/*.env.example
+4
View File
@@ -29,3 +29,7 @@ CONFIGS := ia torrent tools
#DOCKER_PROFILES :=
include DockerCompose.mk
.PHONY: init
init:
@bash tools/init_secrets.sh
+25 -152
View File
@@ -151,165 +151,71 @@ And then, caddy will generate the certificate for you and renew it automatically
### Configure the infrastructure
You need to configure the infrastructure with your own configuration.
You can generate a password with 32 characters:
Every service ships a `*.env.example` file. Real `*.env` files are gitignored and never committed - generate them locally with:
```sh
openssl rand -base64 32
make init
```
Or online: [passwordsgenerator.net](https://passwordsgenerator.net/)
This copies every `*.env.example``*.env` and fills in randomly generated passwords, keys and tokens (including shared values that must match across services, e.g. a service and its database). Existing `.env` files are never overwritten, so re-running it later is always safe.
After `make init`, a few things still need manual attention:
#### Caddy
For [caddy_backup.env](infrastructure/services/caddy/env/caddy_backup.env) file, you need to change the password(s) for the restic backup.
```sh
RESTIC_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
```
On [caddy.env](infrastructure/services/caddy/env/caddy.env) file, you need to update some variables, like the main domain, mail domain and scheme (http or https).
Edit [caddy.env](infrastructure/services/caddy/env/caddy.env.example) to set your domain and mail address:
```sh
MAIN_DOMAIN=bensuperpc.org
MAIL_DOMAIN=bensuperpc@gmail.com
# Scheme
SCHEME=https
# ignore_loaded_certs off
AUTO_HTTPS_OPTIONS=ignore_loaded_certs
```
#### Authelia
#### Authelia - user database
For [authelia.env](infrastructure/services/authelia/env/authelia.env) file, you need to change the password(s) and secret key:
```sh
AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET=ht87MVnXkXhBpDkMUHqKDqdg8UGBJt+Fx5jNIqXnN2k=
AUTHELIA_SESSION_SECRET=nsvbXKGRXVZUCUkOapntlq/Zh+d75WacTK5Jgyh8zYk=
AUTHELIA_STORAGE_ENCRYPTION_KEY=aWeIT74xIhGVd9nUOr4YTToTl5rpBEbzc/fv4jemuos=
AUTHELIA_STORAGE_POSTGRES_HOST=authelia-postgres
AUTHELIA_STORAGE_POSTGRES_PORT=5432
AUTHELIA_STORAGE_POSTGRES_DATABASE=authelia_db
AUTHELIA_STORAGE_POSTGRES_USERNAME=authelia
AUTHELIA_STORAGE_POSTGRES_PASSWORD=sAdkxFW6k3GiMOrlBpl6OV76eb9cQz/uk95jmA2UpI8=
```
Same for [authelia_postgres.env](infrastructure/services/authelia/env/authelia_postgres.env) file, you need to change the password(s) and user for the database.
```sh
POSTGRES_USER=authelia
POSTGRES_PASSWORD=sAdkxFW6k3GiMOrlBpl6OV76eb9cQz/uk95jmA2UpI8=
POSTGRES_DB=authelia_db
```
You also need to update [users_database.yml](infrastructure/services/authelia/config/users_database.yml)
`make init` generates all Authelia secrets automatically. You still need to add at least one user in [users_database.yml](infrastructure/services/authelia/config/users_database.yml). Generate an argon2 hash for your password:
```sh
docker run --rm authelia/authelia:latest authelia crypto hash generate argon2 --password 'MyPassword'
```
#### Dozzle
#### Dozzle - user account
To generate a new user for dozzle, you can use the following command [users.yml](infrastructure/services/dozzle/config/users.yml):
Generate a user entry for [users.yml](infrastructure/services/dozzle/config/users.yml):
```sh
docker run -it --rm amir20/dozzle generate bensuperpc --password mypassword --email bensuperpc@gmail.com --name "bensuperpc"
```
#### PsiTransfer
#### OpenSSH - public key
For [psitransfer.env](infrastructure/services/psitransfer/env/psitransfer.env) file, you need to change the secret key.
Replace [id_ed25519.pub](infrastructure/services/openssh/config/authorized_keys/id_ed25519.pub) with your own public SSH key.
```sh
PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn
```
#### Open-WebUI - Ollama model
For [projectsend_db.env](infrastructure/services/projectsend/env/projectsend_db.env) file, you need to change the password(s) and user for the database.
```sh
MARIADB_ROOT_PASSWORD=8O34297GrBfT3Ld34Lfg9mpotmZwbJtt
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=wdSUa1JEZhXie5AJ5NcX1w73xmpO12EY
```
#### Picoshare
For [picoshare.env](infrastructure/services/picoshare/env/picoshare.env) file, you need to change the secret key.
```sh
PS_SHARED_SECRET=CBuS4DJLqIe93xF1KGYRrnhxUFBqLD2n
```
#### Dufs
For [dufs.env](infrastructure/services/dufs/env/dufs.env) file, you need to change the secret key and if you want the user name.
```sh
DUFS_AUTH="admin:heqihlOfBmJDESGFlpbPi7P7Mi6F7RkV@/:rw|@/:ro"
```
#### Stirling PDF
For [stirlingpdf.env](infrastructure/services/stirlingpdf/env/stirlingpdf.env) file, it's **completly optional**, you can change the password(s) and user.
```sh
# Enable security, optional
DOCKER_ENABLE_SECURITY=true
SECURITY_ENABLE_LOGIN=true
# Can be disabled after initial login, optional,
# default it admin:stirling
SECURITY_INITIALLOGIN_USERNAME=admin
SECURITY_INITIALLOGIN_PASSWORD=Jw9U039f5xc2mFcacvGvPD9RjwIh4DzO
```
#### OpenSSH
You can need to add/change the public ssh key [id_ed25519.pub](infrastructure/services/openssh/config/authorized_keys/id_ed25519.pub) (its my public key), also change the config/password in [openssh.env](infrastructure/services/openssh/env/openssh.env):
```sh
SUDO_ACCESS=true
#PUBLIC_KEY_URL=https://github.com/bensuperpc.keys
PUBLIC_KEY_DIR=/authorized_ssh_keys
USER_PASSWORD=rdUwf36C11PLmpU9Lvq7tP5pfFBKAuCh
#PUBLIC_KEY=yourpublickey
#PUBLIC_KEY_FILE=/path/to/file
#PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys
#USER_PASSWORD_FILE=/path/to/file
```
#### Open-WebUI
For [open-webui.env](infrastructure/services/open-webui/env/openwebui.env) file, you must change the secret key for the webui and configure its PostgreSQL backend.
```sh
WEBUI_SECRET_KEY=7d83b15a417d090ba5c6b899270a05dd215c60848354c0c7574226d6ff02f39e
DATABASE_URL=postgresql://postgres:securepassword123@openwebui-postgres:5432/openwebui
REDIS_URL=redis://:valkey_password@valkey:6379/0
```
Also update [openwebui-postgres.env](infrastructure/services/open-webui/env/openwebui-postgres.env) and [openwebui-valkey.env](infrastructure/services/open-webui/env/openwebui-valkey.env) with your own credentials.
To download the model, through open-webui GUI or you can use the following command:
After starting the stack, pull a model via the Open-WebUI GUI or with:
```sh
docker exec -it ollama ollama run deepseek-r1:8b
```
#### Dependency-Track
#### Team Fortress 2 - Steam GSLT
For [dependency-track.env](infrastructure/services/dependency-track/env/dependency-track.env) file, you need to set the database credentials and the API server URL.
`make init` will remind you: set `SRCDS_TOKEN` in [teamfortress2.env](infrastructure/services/teamfortress2-server/teamfortress2/env/teamfortress2.env) with your token from [steamcommunity.com/dev/managegameservers](https://steamcommunity.com/dev/managegameservers).
#### Dependency-Track - first login
Default credentials are `admin` / `admin` - **change them on first login**.
#### Forgejo - installation lock
After the first-run installation wizard completes, set in [forgejo.env](infrastructure/services/forgejo/env/forgejo.env.example):
```sh
POSTGRES_USER=dtrack
POSTGRES_PASSWORD=<your_password>
POSTGRES_DB=dtrack_db
ALPINE_DATA_DIRECTORY=/data
FORGEJO__security__INSTALL_LOCK=true
```
The frontend is available at `https://dependency-track.bensuperpc.org` and the API server at `/api/*`. Default credentials are `admin` / `admin`, **change them on first login**.
### Homepage
You can change the homepage config in these files:
@@ -319,16 +225,6 @@ You can change the homepage config in these files:
- [settings.yaml](infrastructure/services/homepage/config/settings.yaml)
- [widgets.yaml](infrastructure/services/homepage/config/widgets.yaml)
### Forgejo
For Forgejo installation, you must change the password(s) and user in [forgejo_db.env](infrastructure/services/forgejo/env/forgejo_db.env) file and [forgejo.env](infrastructure/services/forgejo/env/forgejo.env) file.
Once the installation is complete, you need to set the installation lock:
```sh
FORGEJO__security__INSTALL_LOCK=true
```
### Forgejo Runner (Out of date)
```sh
@@ -436,29 +332,6 @@ AUTO_HTTPS_OPTIONS=ignore_loaded_certs
And remove all the `import authelia_middleware` in the caddyfiles, authelia need https to work.
#### Wordpress
For the [wordpress.env](infrastructure/services/wordpress/env/wordpress.env) file, you need to change the password and user for the database.
```sh
WORDPRESS_DB_USER=bensuperpc
WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
```
For [wordpress_db.env](infrastructure/services/wordpress/env/wordpress_db.env) file, you need to change the password(s) and user for the database.
```sh
MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
```
For [wordpress_backup.env](infrastructure/services/wordpress/env/wordpress_backup.env) file, you need to change the password(s) for the restic backup.
```sh
RESTIC_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
```
## Sources
- [Wordpress](https://wordpress.org/)
@@ -4,4 +4,4 @@ TimeZone=Europe/Paris
BACKUP=NO
BACKUP_HOUR=2
BACKUP_MAX=7
MONITOR=NO
MONITOR=NO
@@ -1,14 +0,0 @@
#RUN_ON_STARTUP=true
RESTIC_REPOSITORY=/mnt/restic
RESTIC_BACKUP_SOURCES=/data
RESTIC_PASSWORD=SCY5cmu12Odca302EXabPA9jXYkCb2NN
# Backup (exuclusive with Check and Prune)
BACKUP_CRON=*/15 * * * *
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
#RESTIC_FORGET_ARGS=--prune --keep-last 8 --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 4
# Check (exuclusive with Check and Prune)
#CHECK_CRON=*/15 * * * *
#RESTIC_CHECK_ARGS=--read-data-subset=40%
# Prune (exuclusive with Check and Prune)
#PRUNE_CRON=*/15 * * * *
#RESTIC_PRUNE_ARGS=
@@ -1,10 +1,10 @@
#RUN_ON_STARTUP=true
RESTIC_REPOSITORY=/mnt/restic
RESTIC_BACKUP_SOURCES=/data
RESTIC_PASSWORD=7xymiWBH4c56rlBXPXbgkxF2zw3f2AGs
RESTIC_PASSWORD=__GENERATE_7DTD_RESTIC_PASSWORD__
# Backup (exuclusive with Check and Prune)
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
BACKUP_CRON=*/15 * * * *
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
#RESTIC_FORGET_ARGS=--prune --keep-last 8 --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 4
# Check (exuclusive with Check and Prune)
#CHECK_CRON=*/15 * * * *
-7
View File
@@ -1,7 +0,0 @@
AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET=ht87MVnXkXhBpDkMUHqKDqdg8UGBJt+Fx5jNIqXnN2k=
AUTHELIA_SESSION_SECRET=nsvbXKGRXVZUCUkOapntlq/Zh+d75WacTK5Jgyh8zYk=
AUTHELIA_STORAGE_ENCRYPTION_KEY=aWeIT74xIhGVd9nUOr4YTToTl5rpBEbzc/fv4jemuos=
AUTHELIA_STORAGE_POSTGRES_ADDRESS=tcp://authelia-postgres:5432
AUTHELIA_STORAGE_POSTGRES_DATABASE=authelia_db
AUTHELIA_STORAGE_POSTGRES_USERNAME=authelia
AUTHELIA_STORAGE_POSTGRES_PASSWORD=sAdkxFW6k3GiMOrlBpl6OV76eb9cQz/uk95jmA2UpI8=
@@ -0,0 +1,7 @@
AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET=__GENERATE_AUTHELIA_JWT_SECRET__
AUTHELIA_SESSION_SECRET=__GENERATE_AUTHELIA_SESSION_SECRET__
AUTHELIA_STORAGE_ENCRYPTION_KEY=__GENERATE_AUTHELIA_STORAGE_ENCRYPTION_KEY__
AUTHELIA_STORAGE_POSTGRES_ADDRESS=tcp://authelia-postgres:5432
AUTHELIA_STORAGE_POSTGRES_DATABASE=authelia_db
AUTHELIA_STORAGE_POSTGRES_USERNAME=authelia
AUTHELIA_STORAGE_POSTGRES_PASSWORD=__GENERATE_AUTHELIA_DB_PASSWORD__
@@ -1,3 +0,0 @@
POSTGRES_USER=authelia
POSTGRES_PASSWORD=sAdkxFW6k3GiMOrlBpl6OV76eb9cQz/uk95jmA2UpI8=
POSTGRES_DB=authelia_db
@@ -0,0 +1,3 @@
POSTGRES_USER=authelia
POSTGRES_PASSWORD=__GENERATE_AUTHELIA_DB_PASSWORD__
POSTGRES_DB=authelia_db
@@ -1,7 +1,7 @@
#RUN_ON_STARTUP=true
RESTIC_REPOSITORY=/mnt/restic
RESTIC_BACKUP_SOURCES=/data
RESTIC_PASSWORD=YFQh8v3Wi95v0p6h88D4u8C8z4gLfdMw
RESTIC_PASSWORD=__GENERATE_CADDY_RESTIC_PASSWORD__
# Backup (exuclusive with Check and Prune)
BACKUP_CRON=*/30 * * * *
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
@@ -11,4 +11,4 @@ RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
#RESTIC_CHECK_ARGS=--read-data-subset=40%
# Prune (exuclusive with Check and Prune)
#PRUNE_CRON=*/30 * * * *
#RESTIC_PRUNE_ARGS=
#RESTIC_PRUNE_ARGS=
@@ -2,6 +2,6 @@ ALPINE_DATABASE_MODE="external"
ALPINE_DATABASE_URL="jdbc:postgresql://dependency-track-postgres:5432/dtrack"
ALPINE_DATABASE_DRIVER="org.postgresql.Driver"
ALPINE_DATABASE_USERNAME="dtrack"
ALPINE_DATABASE_PASSWORD="dtrack"
ALPINE_DATABASE_PASSWORD="__GENERATE_DTRACK_DB_PASSWORD__"
API_BASE_URL="https://dependency-track.bensuperpc.org"
@@ -1,3 +0,0 @@
POSTGRES_DB="dtrack"
POSTGRES_USER="dtrack"
POSTGRES_PASSWORD="dtrack"
@@ -0,0 +1,3 @@
POSTGRES_DB="dtrack"
POSTGRES_USER="dtrack"
POSTGRES_PASSWORD="__GENERATE_DTRACK_DB_PASSWORD__"
@@ -4,4 +4,4 @@ DUFS_SERVE_PATH=/data
DUFS_HIDDEN=tmp,*.log,*.lock
DUFS_ALLOW_ALL=true
DUFS_COMPRESS=medium
DUFS_AUTH="admin:heqihlOfBmJDESGFlpbPi7P7Mi6F7RkV@/:rw|@/:ro"
DUFS_AUTH="admin:__GENERATE_DUFS_PASSWORD__@/:rw|@/:ro"
@@ -4,7 +4,7 @@ FORGEJO__database__DB_TYPE=mysql
FORGEJO__database__HOST=database_forgejo:3306
FORGEJO__database__NAME=forgejo
FORGEJO__database__USER=bensuperpc
FORGEJO__database__PASSWD=ZcuHcM9tnIEM7EEO7R5jCpEt6v1d6r7s
FORGEJO__database__PASSWD=__GENERATE_FORGEJO_DB_PASSWORD__
FORGEJO__APP_NAME=Bensuperpc's Forgejo
FORGEJO__APP_SLOGAN=Personal Code, Mirrors, and More
FORGEJO__server__DOMAIN=git.bensuperpc.org
@@ -13,7 +13,7 @@ FORGEJO__server__HTTP_PORT=3000
FORGEJO__server__SSH_LISTEN_PORT=2222
FORGEJO__server__SSH_PORT=22
FORGEJO__server__ROOT_URL=https://git.bensuperpc.org
FORGEJO__security__SECRET_KEY=7IWrMh7mC7UMo1SowvUsAT2LOX49eU6P
FORGEJO__security__SECRET_KEY=__GENERATE_FORGEJO_SECRET_KEY__
#FORGEJO__security__INTERNAL_TOKEN=
FORGEJO__security__INSTALL_LOCK=true
FORGEJO__security__MIN_PASSWORD_LENGTH=8
@@ -22,4 +22,4 @@ FORGEJO__actions__DEFAULT_ACTIONS_URL="https://git.bensuperpc.org"
#FORGEJO__log__LEVEL: "debug"
FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true
FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false
FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.actions
FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.actions
-4
View File
@@ -1,4 +0,0 @@
MARIADB_ROOT_PASSWORD=ZI8Trbot3b8WGqE5AKj1yphKMu4v9qQw
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=ZcuHcM9tnIEM7EEO7R5jCpEt6v1d6r7s
MARIADB_DATABASE=forgejo
@@ -0,0 +1,4 @@
MARIADB_ROOT_PASSWORD=__GENERATE_FORGEJO_DB_ROOT_PASSWORD__
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=__GENERATE_FORGEJO_DB_PASSWORD__
MARIADB_DATABASE=forgejo
@@ -1,3 +1,3 @@
DOCKER_HOST=tcp://docker:2376
DOCKER_CERT_PATH=/certs/client
DOCKER_TLS_VERIFY=1
DOCKER_TLS_VERIFY=1
@@ -1,14 +1,14 @@
#RUN_ON_STARTUP=true
RESTIC_REPOSITORY=/mnt/restic
RESTIC_BACKUP_SOURCES=/data
RESTIC_PASSWORD=SCY5cmu12Odca302EXabPA9jXYkCb2NN
RESTIC_PASSWORD=__GENERATE_MINECRAFT_RESTIC_PASSWORD__
# Backup (exuclusive with Check and Prune)
BACKUP_CRON=*/15 * * * *
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
BACKUP_CRON=*/15 * * * *
#RESTIC_FORGET_ARGS=--prune --keep-last 8 --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 4
# Check (exuclusive with Check and Prune)
#CHECK_CRON=*/15 * * * *
#RESTIC_CHECK_ARGS=--read-data-subset=40%
# Prune (exuclusive with Check and Prune)
#PRUNE_CRON=*/15 * * * *
#RESTIC_PRUNE_ARGS=
#RESTIC_PRUNE_ARGS=
@@ -31,4 +31,4 @@ REMOVE_OLD_MODS_DEPTH=16
# MODS_FORGEAPI_IGNORE_GAMETYPE
# REMOVE_OLD_FORGEAPI_MODS
# REMOVE_OLD_DATAPACKS_DEPTH
# REMOVE_OLD_DATAPACKS_INCLUDE
# REMOVE_OLD_DATAPACKS_INCLUDE
@@ -6,7 +6,7 @@ VELOCITY_BUILD_ID=594
DEBUG=false
DEBUG_HELPER=false
ENABLE_RCON=false
#RCON_PASSWORD=6hxU3Oxmh2Q8e6S9fjkdWJik
#RCON_PASSWORD=__GENERATE_MINECRAFT_PROXY_RCON_PASSWORD__
#RCON_PORT=25576
INIT_MEMORY=512M
MAX_MEMORY=1536M
@@ -64,7 +64,7 @@ ALLOW_FLIGHT=false
# RCON options
ENABLE_RCON=false
RCON_PASSWORD=6hxU3Oxmh2Q8e6S9fjkdWJik
RCON_PASSWORD=__GENERATE_MINECRAFT_RCON_PASSWORD__
RCON_PORT=25575
BROADCAST_CONSOLE_TO_OPS=true
BROADCAST_RCON_TO_OPS=true
@@ -78,4 +78,3 @@ SNOOPER_ENABLED=true
ENABLE_STATUS=true
PREVIEWS_CHAT=false
#SYNC_CHUNK_WRITES=true
@@ -19,4 +19,4 @@ SEED=3820
# Spawn Entities Options
SPAWN_ANIMALS=true
SPAWN_MONSTERS=true
SPAWN_NPCS=true
SPAWN_NPCS=true
@@ -154,7 +154,9 @@ services:
env_file:
- ./env/openwebui-valkey.env
restart: on-failure:7
command: valkey-server --requirepass ${VALKEY_PASSWORD:-valkey_password} --maxclients 10000 --timeout 1800
# $$VALKEY_PASSWORD (not ${VALKEY_PASSWORD}) so it's expanded at container
# runtime from env_file, not at compose-parse time from the host shell.
command: sh -c 'exec valkey-server --requirepass "$$VALKEY_PASSWORD" --maxclients 10000 --timeout 1800'
volumes:
- openwebui-valkey:/data
networks:
@@ -1,3 +0,0 @@
POSTGRES_USER=litellm_user
POSTGRES_PASSWORD=fdbdfsgfdghgjhfjtjgdfssdgsfdg
POSTGRES_DB=litellm_db
@@ -0,0 +1,3 @@
POSTGRES_USER=litellm_user
POSTGRES_PASSWORD=__GENERATE_LITELLM_DB_PASSWORD__
POSTGRES_DB=litellm_db
-11
View File
@@ -1,11 +0,0 @@
DATABASE_URL=postgresql://litellm_user:fdbdfsgfdghgjhfjtjgdfssdgsfdg@litellm-postgres:5432/litellm_db
LITELLM_MASTER_KEY=a51d5a17f7b8f96128866c6bfc903ec0
LITELLM_MODE=proxy
UI_USERNAME=admin
UI_PASSWORD=ffdsfsdsfdggdfsgdfhgfsgfsg
PROXY_BASE_URL=https://litellm.bensuperpc.org
#OPENAI_API_KEY=
#ANTHROPIC_API_KEY=
@@ -0,0 +1,11 @@
DATABASE_URL=postgresql://litellm_user:__GENERATE_LITELLM_DB_PASSWORD__@litellm-postgres:5432/litellm_db
LITELLM_MASTER_KEY=__GENERATE_LITELLM_MASTER_KEY__
LITELLM_MODE=proxy
UI_USERNAME=admin
UI_PASSWORD=__GENERATE_LITELLM_UI_PASSWORD__
PROXY_BASE_URL=https://litellm.bensuperpc.org
#OPENAI_API_KEY=
#ANTHROPIC_API_KEY=
@@ -1,4 +0,0 @@
PGADMIN_DEFAULT_EMAIL=admin@local.ai
PGADMIN_DEFAULT_PASSWORD=admin123
PGADMIN_CONFIG_SERVER_MODE=False
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=False
@@ -0,0 +1,4 @@
PGADMIN_DEFAULT_EMAIL=admin@local.ai
PGADMIN_DEFAULT_PASSWORD=__GENERATE_PGADMIN_PASSWORD__
PGADMIN_CONFIG_SERVER_MODE=False
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=False
@@ -1 +0,0 @@
PIPELINES_API_KEY=ssdfsfdsfdgfgfg
@@ -0,0 +1 @@
PIPELINES_API_KEY=__GENERATE_PIPELINES_API_KEY__
@@ -1,3 +0,0 @@
POSTGRES_DB=openwebui
POSTGRES_USER=postgres
POSTGRES_PASSWORD=securepassword123
@@ -0,0 +1,3 @@
POSTGRES_DB=openwebui
POSTGRES_USER=postgres
POSTGRES_PASSWORD=__GENERATE_OPENWEBUI_DB_PASSWORD__
@@ -1,2 +0,0 @@
QDRANT__SERVICE__API_KEY=qdrant_api_key
QDRANT__SERVICE__ENABLE_API_KEY_AUTHORIZATION=true
@@ -0,0 +1,2 @@
QDRANT__SERVICE__API_KEY=__GENERATE_QDRANT_API_KEY__
QDRANT__SERVICE__ENABLE_API_KEY_AUTHORIZATION=true
@@ -1 +0,0 @@
VALKEY_PASSWORD=valkey_password
@@ -0,0 +1 @@
VALKEY_PASSWORD=__GENERATE_VALKEY_PASSWORD__
@@ -1,10 +1,10 @@
OLLAMA_BASE_URL=http://ollama:11434
OPENAI_API_BASE_URL=http://litellm:4000/v1
OPENAI_API_KEY=a51d5a17f7b8f96128866c6bfc903ec0
OPENAI_API_KEY=__GENERATE_LITELLM_MASTER_KEY__
# openssl rand -hex 32
WEBUI_SECRET_KEY=7d83b15a417d090ba5c6b899270a05dd215c60848354c0c7574226d6ff02f39e
WEBUI_SECRET_KEY=__GENERATE_OPENWEBUI_SECRET_KEY__
#HF_HUB_OFFLINE=1
# Disable analytics
@@ -16,7 +16,7 @@ ANONYMIZED_TELEMETRY=false
#OPENAI_API_KEY=
# Database configuration
DATABASE_URL=postgresql://postgres:securepassword123@openwebui-postgres:5432/openwebui
DATABASE_URL=postgresql://postgres:__GENERATE_OPENWEBUI_DB_PASSWORD__@openwebui-postgres:5432/openwebui
DATABASE_POOL_SIZE=20
DATABASE_POOL_MAX_OVERFLOW=10
DATABASE_POOL_TIMEOUT=30
@@ -24,12 +24,12 @@ DATABASE_POOL_RECYCLE=1800
VECTOR_DB=${VECTOR_DB:-qdrant}
QDRANT_URI=http://qdrant:6333
QDRANT_API_KEY=qdrant_api_key
QDRANT_API_KEY=__GENERATE_QDRANT_API_KEY__
REDIS_URL=redis://:valkey_password@valkey:6379/0
REDIS_URL=redis://:__GENERATE_VALKEY_PASSWORD__@valkey:6379/0
ENABLE_WEBSOCKET_SUPPORT=true
WEBSOCKET_MANAGER=redis
WEBSOCKET_REDIS_URL=redis://:valkey_password@valkey:6379/1?socket_timeout=86400
WEBSOCKET_REDIS_URL=redis://:__GENERATE_VALKEY_PASSWORD__@valkey:6379/1?socket_timeout=86400
# Fix issues with redis lib 8.0.0 and openwebUI 0.10.1
WEBSOCKET_REDIS_OPTIONS={"socket_timeout":null}
@@ -4,11 +4,11 @@ DOCKER_MODS=linuxserver/mods:openssh-server-rsync
#PUBLIC_KEY_URL=https://github.com/bensuperpc.keys
PUBLIC_KEY_DIR=/authorized_ssh_keys
USER_NAME=admin
USER_PASSWORD=it47mnLJIhNFspkYQo70zJsAYX7n0DSX
USER_PASSWORD=__GENERATE_OPENSSH_USER_PASSWORD__
#PUBLIC_KEY=yourpublickey
#PUBLIC_KEY_FILE=/path/to/file
#PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys
#PUBLIC_KEY_URL=https://github.com/username.keys
#USER_PASSWORD_FILE=/path/to/file
#LOG_STDOUT=
#LOG_STDOUT=
-3
View File
@@ -1,3 +0,0 @@
PS_SHARED_SECRET=CBuS4DJLqIe93xF1KGYRrnhxUFBqLD2n
PORT=4001
PS_BEHIND_PROXY=true
@@ -0,0 +1,3 @@
PS_SHARED_SECRET=__GENERATE_PICOSHARE_SHARED_SECRET__
PORT=4001
PS_BEHIND_PROXY=true
@@ -1,4 +0,0 @@
MARIADB_ROOT_PASSWORD=8O34297GrBfT3Ld34Lfg9mpotmZwbJtt
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=wdSUa1JEZhXie5AJ5NcX1w73xmpO12EY
MARIADB_DATABASE=projectsend
@@ -0,0 +1,4 @@
MARIADB_ROOT_PASSWORD=__GENERATE_PROJECTSEND_DB_ROOT_PASSWORD__
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=__GENERATE_PROJECTSEND_DB_PASSWORD__
MARIADB_DATABASE=projectsend
@@ -1,2 +0,0 @@
PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn
#PSITRANSFER_PORT=3000
@@ -0,0 +1,2 @@
PSITRANSFER_ADMIN_PASS=__GENERATE_PSITRANSFER_ADMIN_PASS__
#PSITRANSFER_PORT=3000
@@ -1,4 +1,4 @@
WEBUI_PORT=8080
TORRENTING_PORT=6881
# Use alternative WebUI: /vuetorrent
DOCKER_MODS=ghcr.io/vuetorrent/vuetorrent-lsio-mod:latest
DOCKER_MODS=ghcr.io/vuetorrent/vuetorrent-lsio-mod:latest
@@ -1,7 +1,7 @@
#RUN_ON_STARTUP=true
RESTIC_REPOSITORY=/mnt/restic
RESTIC_BACKUP_SOURCES=/data
RESTIC_PASSWORD=SCY5cmu12Odca302EXabPA9jXYkCb2NN
RESTIC_PASSWORD=__GENERATE_SATISFACTORY_RESTIC_PASSWORD__
# Backup (exuclusive with Check and Prune)
BACKUP_CRON=*/15 * * * *
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
@@ -14,4 +14,4 @@ TIMEOUT=60
AUTOSAVEONDISCONNECT=true
CRASHREPORT=true
NETWORKQUALITY=3
NETWORKQUALITY=3
@@ -6,4 +6,4 @@ LANGS=en_GB
# Can be disabled after initial login, optional,
# default it admin:stirling
#SECURITY_INITIALLOGIN_USERNAME=admin
#SECURITY_INITIALLOGIN_PASSWORD=Jw9U039f5xc2mFcacvGvPD9RjwIh4DzO
#SECURITY_INITIALLOGIN_PASSWORD=__GENERATE_STIRLINGPDF_LOGIN_PASSWORD__
@@ -0,0 +1 @@
@@ -1,7 +1,7 @@
#RUN_ON_STARTUP=true
RESTIC_REPOSITORY=/mnt/restic
RESTIC_BACKUP_SOURCES=/data
RESTIC_PASSWORD=SCY5cmu12Odca302EXabPA9jXYkCb2NN
RESTIC_PASSWORD=__GENERATE_TEAMFORTRESS2_RESTIC_PASSWORD__
# Backup (exuclusive with Check and Prune)
BACKUP_CRON=*/15 * * * *
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
@@ -11,4 +11,4 @@ RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
#RESTIC_CHECK_ARGS=--read-data-subset=40%
# Prune (exuclusive with Check and Prune)
#PRUNE_CRON=*/15 * * * *
#RESTIC_PRUNE_ARGS=
#RESTIC_PRUNE_ARGS=
@@ -1,10 +0,0 @@
SRCDS_TOKEN=D3667770288B9CC33B0E526D441FA241
SRCDS_PW=linuxmasterrace
SRCDS_PORT=27015
SRCDS_MAXPLAYERS=32
SRCDS_REGION=3
SRCDS_STARTMAP=pl_goldrush
#SRCDS_MAPCYCLE="mapcycle_default.txt"
#pl_badwater
SRCDS_CFG=server.cfg
SRCDS_SECURED=0
@@ -0,0 +1,12 @@
# Get a free Game Server Login Token from https://steamcommunity.com/dev/managegameservers
# This is NOT a value make init can generate for you, you must fill it in yourself.
SRCDS_TOKEN=CHANGEME_STEAM_GSLT_TOKEN
SRCDS_PW=__GENERATE_TEAMFORTRESS2_SERVER_PW__
SRCDS_PORT=27015
SRCDS_MAXPLAYERS=32
SRCDS_REGION=3
SRCDS_STARTMAP=pl_goldrush
#SRCDS_MAPCYCLE="mapcycle_default.txt"
#pl_badwater
SRCDS_CFG=server.cfg
SRCDS_SECURED=0
@@ -1,3 +0,0 @@
TZ=Etc/UTC
USER=admin
PASS=4vqXCNGG09JUBe7rXkuQS8MG7ovE6Vxj
@@ -0,0 +1,3 @@
TZ=Etc/UTC
USER=admin
PASS=__GENERATE_TRANSMISSION_PASSWORD__
-4
View File
@@ -1,4 +0,0 @@
WORDPRESS_DB_USER=bensuperpc
WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_HOST=wordpress_db:3306
@@ -0,0 +1,4 @@
WORDPRESS_DB_USER=bensuperpc
WORDPRESS_DB_PASSWORD=__GENERATE_WORDPRESS_DB_PASSWORD__
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_HOST=wordpress_db:3306
@@ -1,7 +1,7 @@
#RUN_ON_STARTUP=true
RESTIC_REPOSITORY=/mnt/restic
RESTIC_BACKUP_SOURCES=/data
RESTIC_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
RESTIC_PASSWORD=__GENERATE_WORDPRESS_RESTIC_PASSWORD__
# Backup (exuclusive with Check and Prune)
BACKUP_CRON=*/30 * * * *
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
@@ -11,4 +11,4 @@ RESTIC_FORGET_ARGS=--prune --keep-last 8 --keep-daily 7 --keep-weekly 5 --keep-m
#RESTIC_CHECK_ARGS=--read-data-subset=40%
# Prune (exuclusive with Check and Prune)
#PRUNE_CRON=*/30 * * * *
#RESTIC_PRUNE_ARGS=
#RESTIC_PRUNE_ARGS=
@@ -1,4 +0,0 @@
MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
MARIADB_DATABASE=wordpress
@@ -0,0 +1,4 @@
MARIADB_ROOT_PASSWORD=__GENERATE_WORDPRESS_DB_ROOT_PASSWORD__
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=__GENERATE_WORDPRESS_DB_PASSWORD__
MARIADB_DATABASE=wordpress
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SERVICES_DIR="${ROOT_DIR}/infrastructure/services"
random_value() {
openssl rand -hex 16
}
mapfile -d '' -t examples < <(find "${SERVICES_DIR}" -type f -name '*.env.example' -print0 | sort -z)
created=0
skipped=0
for example in "${examples[@]}"; do
target="${example%.example}"
if [[ -f "${target}" ]]; then
skipped=$((skipped + 1))
continue
fi
cp "${example}" "${target}"
created=$((created + 1))
done
mapfile -d '' -t targets < <(find "${SERVICES_DIR}" -type f -name '*.env' -print0)
declare -A generated
tokens="$(grep -hoE '__GENERATE_[A-Z0-9_]+__' "${targets[@]}" 2>/dev/null | sort -u || true)"
for token in ${tokens}; do
if [[ -z "${generated[${token}]:-}" ]]; then
generated[${token}]="$(random_value)"
fi
value="${generated[${token}]}"
for f in "${targets[@]}"; do
if grep -qF -- "${token}" "${f}" 2>/dev/null; then
sed -i "s#${token}#${value}#g" "${f}"
fi
done
done
echo "Created ${created} env file(s), left ${skipped} existing one(s) untouched."
remaining="$(grep -rlF 'CHANGEME_' "${targets[@]}" 2>/dev/null || true)"
if [[ -n "${remaining}" ]]; then
echo
echo "These files still need a value you must fill in by hand:"
echo "${remaining}"
fi