Update olomana containers

This commit is contained in:
whitney 2025-04-10 22:14:00 -07:00
parent da72f8fcc7
commit b3598dbe7e
20 changed files with 169 additions and 185 deletions

View File

@ -1,5 +0,0 @@
config/
maps/
plugins/
docker-compose.yml

View File

@ -2,14 +2,24 @@
Self-host one or multiple servers.
## Instructions
## Setup
### Minecraft Setup
### Whitelist
#### Whitelist
After first time start go into `server.properties` and set `white-list=true`.
Add users via server commands (`whitelist add NAME`).
OR add users to `whitelist.json` in server directory.
#### Method 1: Docker
In the `itzg/minecraft-server` env vars in docker, add the following to enable and configure whitelist.
```
ENABLE_WHITELIST: "TRUE"
WHITELIST: "player1,player2,player3"
```
Note: The whitelist is additive, so if you set it to `[player1]` and later `[player2,player3]`, you'll end up with a whiltelist accepting all 3 players.
Edit the whitelist in `whitelist.json` in the server directory.
#### Method 2: Manual
After first time startup set `enforce-whitelist=true` in `server.properties`.
Then, create `whitelist.properties` in the server directory with the following contents:
```
[
{
@ -19,18 +29,39 @@ OR add users to `whitelist.json` in server directory.
]
```
#### Method 3: In Game
After first time start go into `server.properties` and set `enforce-whitelist=true`.
Add users via server commands (`whitelist add NAME`).
#### Plugins/Mods
##### Plugins
### Plugins
SinglePlayerSleep: `https://www.spigotmc.org/resources/singleplayersleep.68139/`
Dynmap: `https://www.spigotmc.org/resources/dynmap%C2%AE.274/`
NoEndermanGrief: `https://www.spigotmc.org/resources/no-enderman-grief2.71236/`
ajLeaderboards: `https://www.spigotmc.org/threads/ajleaderboards.471179/`
##### Mods
#### Updating Plugins
It's very easy, just obtain the new jar file for the updated plugin, stop server and swap old jar in `plugins/`.
### Maintenance
Configure scheduled restarts by configuring `crontab` to periodically restart the container.
Most plugins should not need to regenerate their data, so you can leave it as is.
## Maintenance
### Backups
Take backups periodically, we got griefed once and only survived because of a backup.
Create Tar archive:
```
cd location_of_mc_files
tar -czvf ~/1970.01.01-world-backup.tar.gz world world_nether world_the_end server.properties whitelist.json spigot.yml
```
And move to a safe place.
### Periodic Restarts
You might want this because the JVM might start hitting memory limits if too much is going on.
You can configure scheduled restarts by configuring `crontab` to periodically restart the container.
Edit crontab: `sudo crontab -e`
Add: `0 2 * * * docker restart minecraft-2023 minecraft-creative`

View File

@ -18,19 +18,21 @@ services:
- grafana
- minecraft
ports:
- "[SERVER_PORT_1]:25565"
- "[PROMETHEUS_PORT_1]:9225"
- "25566:25565"
- "9226:9225"
volumes:
- /pwspool/games/minecraft/minecraft_creative:/data
environment:
- TYPE=PAPER
- MEMORY=2G
- VERSION=1.21.1
- VERSION=1.21.4
- EULA=TRUE
- SERVER_NAME=minecraft_creative
- MODE=creative
- DIFFICULTY=peaceful
- OPS=RicecakeSMS,pZ_aeriaL
- ENABLE_WHITELIST=true
- WHITELIST=RicecakeSMS,pZ_aeriaL
- ICON=https://i.imgur.com/sqjZGql.png
- ENABLE_COMMAND_BLOCK=true
- GENERATE_STRUCTURES=false
@ -49,27 +51,28 @@ services:
- grafana
- minecraft
ports:
- "[SERVER_PORT_2]:25565"
- "[PROMETHEUS_PORT_2]:9225"
- "[DYNMAP_PORT_2]:8123"
- "25565:25565"
- "9225:9225"
volumes:
- /pwspool/games/minecraft/minecraft_2023:/data
environment:
- TYPE=PAPER
- MEMORY=4G
- VERSION=1.21.1
- VERSION=1.21.4
- EULA=TRUE
- SERVER_NAME=minecraft_2023
- MODE=survival
- SPAWN_PROTECTION=0
- DIFFICULTY=hard
- OPS=RicecakeSMS,pZ_aeriaL
- ENABLE_WHITELIST=true
- WHITELIST=RicecakeSMS,pZ_aeriaL
- ICON=https://i.imgur.com/sqjZGql.png
- SEED="itsgoochfor2023"
- MOTD="\u00A77Pinnerland, powered by \u00A75P\u00A79W\u00A75S\u00A77\!"
- ALLOW_FLIGHT=false
labels:
- traefik.http.routers.minemap.rule=Host(`[MINEMAP_SUBDOMAIN_URL]`)
- traefik.http.routers.minemap.rule=Host(`minemap.whitney.rip`)
- traefik.http.routers.minemap.tls=true
- traefik.http.routers.minemap.tls.certresolver=lets-encrypt
- traefik.http.services.minemap.loadbalancer.server.port=8123
@ -81,18 +84,20 @@ services:
networks:
- minecraft
ports:
- "[SERVER_PORT_3]:25565"
- "25564:25565"
volumes:
- /pwspool/games/minecraft/minecraft_skyblock:/data
environment:
- TYPE=PAPER
- MEMORY=4G
- VERSION=1.20.2
- VERSION=1.21.4
- EULA=TRUE
- SERVER_NAME=minecraft_skyblock
- MODE=survival
- DIFFICULTY=hard
- OPS=RicecakeSMS,pZ_aeriaL
- ENABLE_WHITELIST=true
- WHITELIST=RicecakeSMS,pZ_aeriaL
- ICON=https://i.imgur.com/sqjZGql.png
- MOTD="\u00A77Skyblock, powered by \u00A75P\u00A79W\u00A75S\u00A77\!"
labels:
@ -104,13 +109,13 @@ services:
networks:
- minecraft
ports:
- [SEVER_PORT_4]:2565
- 2565:2565
volumes:
- /pwspool/games/minecraft/minecraft_2023/world:/world
environment:
- RCON_HOST=127.0.0.1
- RCON_PORT=25565
- HTTP_PORT=[SERVER_PORT_4]
- HTTP_PORT=25565
- FORGE_SERVER="False"
- PAPER_SERVER="True"
- DYNMAP_ENABLED="True"

View File

@ -1,2 +0,0 @@
configuration.yaml
docker-compose.yml

View File

@ -10,15 +10,16 @@ frontend:
http:
use_x_forwarded_for: true
trusted_proxies:
- 192.168.x.xxx
- 192.168.96.2
- 172.18.0.2
# Configure logging
logger:
default: info
logs:
homeassistant.core: debug
homeassistant.core: warning
homeassistant.components: info
homeassistant.components.mqtt: debug
homeassistant.components.mqtt: warning
automation: !include automations.yaml
script: !include scripts.yaml

View File

@ -14,12 +14,10 @@ services:
- PGID=1000
- TZ=Etc/UTC
volumes:
- /path/to/config:/config
- /path/to/config/configuration.yaml:/config/configuration.yaml
ports:
- 8123:8123
- /pwspool/software/homeassistant/config:/config
- /pwspool/software/homeassistant/config/configuration.yaml:/config/configuration.yaml
labels:
- traefik.http.routers.homeassistant.rule=Host(`SITE_URL`)
- traefik.http.routers.homeassistant.rule=Host(`iot.whitney.rip`)
- traefik.http.routers.homeassistant.tls=true
- traefik.http.routers.homeassistant.tls.certresolver=lets-encrypt
- traefik.http.services.homeassistant.loadbalancer.server.port=8123

View File

@ -1,2 +0,0 @@
docker-compose.yml

View File

@ -1,5 +1,3 @@
version: "3"
networks:
traefik:
external: true
@ -16,7 +14,8 @@ services:
environment:
- DEFAULT_THEME=dark
labels:
- "traefik.http.routers.metube.rule=Host(`[[SITE_URL]]`)"
- "traefik.http.routers.metube.rule=Host(`yt.whitney.rip`)"
- "traefik.http.routers.metube.tls=true"
- "traefik.http.routers.metube.tls.certresolver=lets-encrypt"
- "traefik.http.services.metube.loadbalancer.server.port=8081"

View File

@ -1,2 +1,2 @@
docker-compose.yml
config-admin.env
config-public.env

View File

@ -0,0 +1,16 @@
# See what you should rename this file to in docker-compose.yml
PHOTOPRISM_ADMIN_USER=
PHOTOPRISM_ADMIN_PASSWORD=
PHOTOPRISM_LOG_LEVEL=info
PHOTOPRISM_SITE_URL=https://photos.whitney.rip
PHOTOPRISM_ORIGINALS_LIMIT=5000
PHOTOPRISM_HTTP_COMPRESSION=gzip
PHOTOPRISM_EXPERIMENTAL=false
PHOTOPRISM_DISABLE_FACES=true
PHOTOPRISM_DISABLE_RAW=false
PHOTOPRISM_JPEG_QUALITY=100
PHOTOPRISM_SITE_CAPTION=PWS Photos (Admin)
PHOTOPRISM_SITE_DESCRIPTION=Admin instance of PWS Photoprism.
PHOTOPRISM_SITE_AUTHOR=PWS
PHOTOPRISM_ADMIN_ROLE=admin
PHOTOPRISM_DEFAULT_ROLE=admin

View File

@ -0,0 +1,13 @@
PHOTOPRISM_DEFAULT_ROLE=guest
PHOTOPRISM_PUBLIC=true
PHOTOPRISM_LOG_LEVEL=info
PHOTOPRISM_SITE_URL=https://gallery.whitney.rip
PHOTOPRISM_ORIGINALS_LIMIT=5000
PHOTOPRISM_HTTP_COMPRESSION=gzip
PHOTOPRISM_EXPERIMENTAL=false
PHOTOPRISM_DISABLE_FACES=true
PHOTOPRISM_DISABLE_RAW=false
PHOTOPRISM_JPEG_QUALITY=100
PHOTOPRISM_SITE_CAPTION=PWS Photos
PHOTOPRISM_SITE_DESCRIPTION=Photos, hosted on PWS!
PHOTOPRISM_SITE_AUTHOR=PWS

View File

@ -0,0 +1,45 @@
networks:
traefik:
external: true
services:
admin:
image: photoprism/photoprism
container_name: photoprism-admin
restart: unless-stopped
networks:
- traefik
security_opt:
- seccomp:unconfined
- apparmor:unconfined
env_file:
- config-admin.env
volumes:
- /pwspool/software/photoprism/storage:/photoprism/storage
- /pwspool/software/photoprism/originals:/photoprism/originals
labels:
- traefik.http.routers.private-photos.rule=Host(`photos.whitney.rip`)
- traefik.http.routers.private-photos.tls=true
- traefik.http.routers.private-photos.tls.certresolver=lets-encrypt
- traefik.http.services.private-photos.loadbalancer.server.port=2342
public:
image: photoprism/photoprism
container_name: photoprism-public
restart: unless-stopped
networks:
- traefik
security_opt:
- seccomp:unconfined
- apparmor:unconfined
env_file:
- config-public.env
volumes:
- /pwspool/software/photoprism/storage:/photoprism/storage
- /pwspool/software/photoprism/originals:/photoprism/originals
labels:
- traefik.http.routers.public-photos.rule=Host(`gallery.whitney.rip`)
- traefik.http.routers.public-photos.tls=true
- traefik.http.routers.public-photos.tls.certresolver=lets-encrypt
- traefik.http.services.public-photos.loadbalancer.server.port=2342

View File

@ -1,73 +0,0 @@
version: "3"
networks:
[TRAEFIK_NETWORK]:
external: true
services:
photoprism-private:
image: photoprism/photoprism
container_name: photoprism-private
restart: unless-stopped
networks:
- [TRAEFIK_NETWORK]
security_opt:
- seccomp:unconfined
- apparmor:unconfined
volumes:
- /pwspool/software/photoprism/storage:/photoprism/storage
- /pwspool/software/photoprism/originals:/photoprism/originals
environment:
- PHOTOPRISM_ADMIN_USER=[[ADMIN_USER]]
- PHOTOPRISM_ADMIN_PASSWORD=[[ADMIN_PASS]]
- PHOTOPRISM_LOG_LEVEL=info
- PHOTOPRISM_SITE_URL=[[SITE_URL_WITH_HTTPS]]
- PHOTOPRISM_ORIGINALS_LIMIT=5000
- PHOTOPRISM_HTTP_COMPRESSION=gzip
- PHOTOPRISM_EXPERIMENTAL=false
- PHOTOPRISM_DISABLE_FACES=true
- PHOTOPRISM_DISABLE_RAW=false
- PHOTOPRISM_JPEG_QUALITY=100
- PHOTOPRISM_SITE_CAPTION=[[SITE_CAPTION]]
- PHOTOPRISM_SITE_DESCRIPTION=[[SITE_DESCRIPTION]]
- PHOTOPRISM_SITE_AUTHOR=[[SITE_AUTHOR]]
labels:
- traefik.http.routers.private-photos.rule=Host(`[[SITE_URL_WITH_HTTPS]]`)
- traefik.http.routers.private-photos.tls=true
- traefik.http.routers.private-photos.tls.certresolver=lets-encrypt
- traefik.http.services.private-photos.loadbalancer.server.port=2342
photoprism-public:
image: photoprism/photoprism
container_name: photoprism-public
restart: unless-stopped
networks:
- [TRAEFIK_NETWORK]
security_opt:
- seccomp:unconfined
- apparmor:unconfined
ports:
- "[[DIFFERENT_HOST_PORT]]:2342"
volumes:
- /pwspool/software/photoprism/storage:/photoprism/storage
- /pwspool/software/photoprism/originals:/photoprism/originals
environment:
- PHOTOPRISM_READONLY=true
- PHOTOPRISM_AUTH_MODE=public
- PHOTOPRISM_LOG_LEVEL=info
- PHOTOPRISM_SITE_URL=[[DIFFERENT_SITE_URL_WITH_HTTPS]]
- PHOTOPRISM_ORIGINALS_LIMIT=5000
- PHOTOPRISM_HTTP_COMPRESSION=gzip
- PHOTOPRISM_EXPERIMENTAL=false
- PHOTOPRISM_DISABLE_FACES=true
- PHOTOPRISM_DISABLE_RAW=false
- PHOTOPRISM_JPEG_QUALITY=100
- PHOTOPRISM_SITE_CAPTION=[[SITE_CAPTION]]
- PHOTOPRISM_SITE_DESCRIPTION=[[SITE_DESCRIPTION]]
- PHOTOPRISM_SITE_AUTHOR=[[SITE_AUTHOR]]
labels:
- traefik.http.routers.public-photos.rule=Host(`[[DIFFERENT_SITE_URL_WITH_HTTPS]]`)
- traefik.http.routers.public-photos.tls=true
- traefik.http.routers.public-photos.tls.certresolver=lets-encrypt
- traefik.http.services.public-photos.loadbalancer.server.port=2342

View File

@ -1,2 +0,0 @@
docker-compose.yml

View File

@ -20,9 +20,8 @@ services:
- /pwspool/archive/plex/photos:/photos
- /pwspool/archive/plex/homevideos:/homevideos
- /pwspool/archive/plex/transcode:/transcode
ports:
- "32400:32400"
labels:
- traefik.http.routers.plex.rule=Host(`SITE_URL`)
- traefik.http.routers.plex.tls=true
- traefik.http.routers.plex.tls.certresolver=lets-encrypt
- traefik.http.services.plex.loadbalancer.server.port=32400
- traefik.enable=false

View File

@ -1,2 +1,3 @@
docker-compose.yml
gitea.env
database.env

View File

@ -7,6 +7,11 @@ Followed instructions on Gitea page: https://docs.gitea.com/next/installation/in
```
sudo groupadd gitea && sudo useradd giteauser && sudo usermod -a -G gitea giteauser && chown -r gitea:giteauser .
```
2. Configure Environment
Create `gitea.env` and `database.env` from the examples, replacing with relevant env values.
See [Gitea Documentation](https://docs.gitea.com/administration/config-cheat-sheet) for examples/types.
2. Run via Docker Compose
```
@ -23,8 +28,10 @@ Some things that were weird:
- could not use any port that wasnt default postgresql (5432)
- had to make sure to specify database container by the right name. Removed custom name and used just "database".
Note that the first admin is set via env vars, by generating the password hash. Alternatively create your users by setting the env var that controls signups.
5. Provision new users
You can do that from the "Site Administration" view from the first admin user.
6. Configure SSH
**Note: This is probably not worth pursuing and I've given up on it. The following has only sort of worked for me.**

View File

@ -0,0 +1,3 @@
POSTGRES_USER=gitea
POSTGRES_PASSWORD=
POSTGRES_DB=gitea

View File

@ -1,61 +0,0 @@
networks:
gitea_network:
external: false
TRAEFIK_NETWORK:
external: true
services:
server:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
depends_on:
- database
environment:
- USER_UID=GITEA_USER_ID
- USER_GID=GITEA_USER_GROUP_ID
- DOMAIN=SUBDOMAIN_URL
- PROTOCOL=http
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=database:5432
- GITEA__database__NAME=GITEA_DB_NAME
- GITEA__database__USER=GITEA_DB_USER
- GITEA__database__PASSWD=GITEA_DB_PASS
- GITEA__service__DISABLE_REGISTRATION=true
- GITEA__openid__ENABLE_OPENID_SIGNUP=DISABLE_REGISTRATION
- GITEA__openid__ENABLE_OPENID_SIGNIN=false
- GITEA__server__ROOT_URL=SUBDOMAIN_URL
- GITEA__server__LOCAL_ROOT_URL=HTTP_SUBDOMAIN_URL
- GITEA__server__SSH_DOMAIN=SUBDOMAIN_URL
- GITEA__server__SSH_PORT=HOST_SSH_PORT
- GITEA__server__SSH_LISTEN_PORT=HOST_SSH_PORT
- GITEA__server__START_SSH_SERVER=true
networks:
- gitea_network
- TRAEFIK_NETWORK
ports:
- "HOST_SSH_PORT:22"
volumes:
- /pwspool/software/gitea/gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
labels:
- traefik.http.routers.gitea.rule=Host(`SUBDOMAIN_URL`)
- traefik.http.routers.gitea.tls=true
- traefik.http.routers.gitea.tls.certresolver=lets-encrypt
- traefik.http.services.gitea.loadbalancer.server.port=3000
database:
image: postgres:14
networks:
- gitea_network
restart: unless-stopped
environment:
- POSTGRES_USER=GITEA_DB_USER
- POSTGRES_PASSWORD=GITEA_DB_PASS
- POSTGRES_DB=GITEA_DB_NAME
volumes:
- /pwspool/software/gitea/database:/var/lib/postgresql/data
labels:
- traefik.enable=false

View File

@ -0,0 +1,11 @@
USER_UID=1005
USER_GID=1007
GITEA__server__PROTOCOL=http
GITEA__server__ROOT_URL=https://git.example.com
GITEA__database__DB_TYPE=postgres
GITEA__database__HOST=database:5432
GITEA__database__NAME=gitea
GITEA__database__USER=gitea
GITEA__database__PASSWD=
GITEA__openid__ENABLE_OPENID_SIGNIN=false
GITEA__service__DISABLE_REGISTRATION=true