first cycle lab release

This commit is contained in:
2026-10-04 00:30:09 +07:00
parent 85f6897365
commit d134daafd8
92 changed files with 5623 additions and 9 deletions
+8
View File
@@ -0,0 +1,8 @@
# Set TRUE only after accepting https://www.minecraft.net/en-us/eula
MC_EULA=FALSE
MC_MEMORY=2G
MC_PORT=25565
MC_UID=1000
MC_GID=1000
# IPv4 interface for game port: 127.0.0.1 locally, 0.0.0.0 for remote LAN access
MC_BIND_ADDRESS=127.0.0.1
+30
View File
@@ -0,0 +1,30 @@
# Local server
Этот каталог — source server configuration и прежний Phase 0 Compose.
Lifecycle полного релиза использует `scripts/server.sh` и Compose из самого
релиза; настройка описана в [docs/runtime.md](../docs/runtime.md).
`compose.yaml` — проверенный runtime NeoForge через локальный `.mrpack`.
Image закреплён в `toolchain.lock.env`, который загружает wrapper
`scripts/spike-server.sh`. Данные находятся в `runtime/`, артефакты
монтируются read-only из `dist/`. Порт публикуется только на IPv4 loopback.
Онлайн-проверка аккаунтов отключена согласно требованиям проекта.
`server.properties` создаётся image из Compose environment. Отдельный
source-файл не используется: иначе параметры получили бы двух владельцев.
Секреты и локальные настройки — в игнорируемом `.env`; публичные defaults —
в `.env.example`. Самостоятельное принятие EULA обязательно на новом host.
Для overrides скопировать `compose.override.yaml.example` в
`compose.override.yaml`, добавить нужные настройки в `server/config/` и
передать слой явно:
```bash
scripts/spike-server.sh -f server/compose.override.yaml config --quiet
scripts/spike-server.sh -f server/compose.override.yaml up -d --wait --wait-timeout 600
```
Override заменяет соответствующие runtime-конфиги при запуске. Текущий
`server/config/spike-marker.txt` — тестовый пример; основной Compose его
не применяет. `compose.spike-override.yaml` сохранён для воспроизведения
Phase 0. Автоматические backup/deploy/rollback появятся в следующих фазах.
+11
View File
@@ -0,0 +1,11 @@
# Copy to compose.override.yaml and pass explicitly with -f.
# This optional layer gives server/config precedence over pack config.
services:
minecraft:
environment:
SYNC_SKIP_NEWER_IN_DESTINATION: "false"
volumes:
- type: bind
source: ${MC_ROOT:?Set project root}/server/config
target: /config
read_only: true
+10
View File
@@ -0,0 +1,10 @@
# Optional Phase 0 probe, not a production config policy.
services:
minecraft:
environment:
SYNC_SKIP_NEWER_IN_DESTINATION: "false"
volumes:
- type: bind
source: ${MC_ROOT}/server/config
target: /config
read_only: true
+36
View File
@@ -0,0 +1,36 @@
services:
minecraft:
image: ${MC_IMAGE:?Run scripts/spike-server.sh}
restart: "no"
stop_grace_period: 2m
ports:
- "${MC_BIND_ADDRESS:-127.0.0.1}:${MC_PORT:-25565}:25565"
environment:
EULA: ${MC_EULA:-FALSE}
TYPE: MODRINTH
MODRINTH_MODPACK: /modpacks/${MC_PACK:?Select a built mrpack}
# Disable implicit image-maintained mod filters: test source side metadata.
MODRINTH_DEFAULT_EXCLUDE_INCLUDES: ""
MEMORY: ${MC_MEMORY:-2G}
UID: ${MC_UID:-1000}
GID: ${MC_GID:-1000}
ENABLE_RCON: "false"
ONLINE_MODE: "false"
ENFORCE_SECURE_PROFILE: "false"
MOTD: minecraft-lab Phase 0
VIEW_DISTANCE: "6"
SIMULATION_DISTANCE: "4"
volumes:
- type: bind
source: ${MC_ROOT:?Set project root}/runtime
target: /data
- type: bind
source: ${MC_ROOT:?Set project root}/dist
target: /modpacks
read_only: true
healthcheck:
test: ["CMD", "mc-health"]
start_period: 2m
interval: 10s
timeout: 10s
retries: 30
+1
View File
@@ -0,0 +1 @@
server-override-v1