Свой сервер
Сервер в Docker
Образ подходит для любого Linux с Docker, в том числе для систем старше Ubuntu 24.04. В нём уже есть Lua 5.1 для обфускатора и проверка здоровья контейнера.
Загрузить образ
Заголовок раздела «Загрузить образ»Образ лежит в релизе файлом. Скачайте nodemp-server-v1.12.0-image.tar со
страницы релиза и загрузите
его в Docker:
docker load -i nodemp-server-v1.12.0-image.tarDocker ответит Loaded image: nodemp-server:1.12.0-d939044. Этот тег и запускают.
Как устроен контейнер
Заголовок раздела «Как устроен контейнер»- Настройки — только переменные окружения. Образ не читает
server.toml: каждая настройка задаётся своей переменной,NODE_NAMEдля[server] nameи так далее. Полный список — на странице server.toml. - Всё, что сервер пишет, лежит в
/data: ресурсы, моды, хранилище, баны, логи. Папку с программой сервер менять не может. - Сервер работает от пользователя с id 10001. Папка данных должна принадлежать ему.
- TLS-сертификат тоже должен лежать в
/data. По умолчанию сервер кладёт его рядом с программой, а там только чтение. Две переменные ниже переносят его в/data/tls.
Подготовить папку данных
Заголовок раздела «Подготовить папку данных»mkdir -p data && sudo chown 10001:10001 dataЗапустить
Заголовок раздела «Запустить»docker run -d --name nodemp --restart unless-stopped \ -p 30814:30814/tcp -p 30814:30814/udp \ -v "$PWD/data:/data" \ -e NODE_TLS_CERT=/data/tls/node_cert.pem \ -e NODE_TLS_KEY=/data/tls/node_key.pem \ -e NODE_NAME="Вечерний фрирум" \ -e NODE_MAP=/levels/west_coast_usa/info.json \ nodemp-server:1.12.0-d939044Лог смотрят так:
docker logs -f nodempЧтобы поменять настройку, удалите контейнер (docker rm -f nodemp) и запустите его снова с новыми
переменными. Папка data/ при этом не трогается.
То же через Compose
Заголовок раздела «То же через Compose»С Compose настройки удобнее править в файле. Положите рядом с папкой data/ файл compose.yaml:
services: nodemp: image: nodemp-server:1.12.0-d939044 restart: unless-stopped ports: ["30814:30814/tcp", "30814:30814/udp"] volumes: ["./data:/data"] stdin_open: true tty: true env_file: .env environment: NODE_TLS_CERT: /data/tls/node_cert.pem NODE_TLS_KEY: /data/tls/node_key.pem NODE_NAME: Вечерний фрирум NODE_MAP: /levels/west_coast_usa/info.jsonВ файл .env рядом положите секреты, например ключ сервера
(Попасть в список), и закройте его от чужих глаз (chmod 600 .env).
Пока секретов нет, файл может быть пустым, но он должен существовать (touch .env). Затем:
docker compose up -ddocker compose logs -fПосле правки compose.yaml снова выполните docker compose up -d: Compose пересоздаст контейнер,
а data/ останется как есть.
Консоль
Заголовок раздела «Консоль»stdin_open и tty дают серверу терминал, и у него появляется консоль. Подключиться к ней:
docker attach nodempЕсли запускали через Compose без container_name, имя контейнера покажет docker compose ps.
Выйти, не останавливая сервер, — Ctrl+P, затем Ctrl+Q. С docker run консоль появится, если
добавить ключ -it.
Ресурсы и моды
Заголовок раздела «Ресурсы и моды»Копируйте ресурсы в data/resources/, моды — в data/content/. Файлы должны читаться пользователем
10001, поэтому после копирования выполните sudo chown -R 10001:10001 data. Моды сервер читает при
запуске, так что потом перезапустите контейнер (docker restart nodemp).
Нативные модули лежат внутри образа, а не в /data: чтобы добавить модуль, соберите свой образ на
основе этого.