Skip to content

Neverwinter Nights: Enhanced Edition

Return to the Forgotten Realms in this bestselling Dungeons & Dragons roleplaying game. Combines all the content of Neverwinter Nights Diamond Edition with all-new enhanced features. Includes 100+ hours of award-winning adventures and the tools to create your own!

Report an issue
updated
variables
20
images
1
author
git@robsti.dev
sha256
8df5df41b572

Readme

Neverwinter Nights: Enhanced Edition

Return to the Forgotten Realms in this bestselling Dungeons & Dragons roleplaying game. Combines all the content of Neverwinter Nights Diamond Edition with all-new enhanced features. Includes 100+ hours of award-winning adventures and the tools to create your own!

Be mindful that this is a very old 32-bit application. Documentation and support is limited.

[!IMPORTANT] Due to a bug in the current Pterodactyl Wings daemon (git issue here) your Wings daemon must be configured to use UID `1000`` when running this server. If not, then the server will crash upon opening. TLDR; The game expects the current user to exist as it uses it to build working directory paths, and by default the user created for the container has a UID of 1000.

Server Ports

Port default
Game 5121
Script Debugger 5122

Content and Modules

This is a barebones server that does not include any content. All content must be self supplied. You can retrieve the official modules by purchasing the game and copying the data to your server. You may also consume player-made modules from various community websites, most popular of which is the Neverwinter Vault.

Installing official data

Official data can be transferred and used on the server, but you must own a copy of the game to get the data.

  1. Browse to your local installation of the game.
  2. Archive the data/ directory.
  3. In Pterodactyl, navigate to the server view and into the Files tab.
  4. Upload the new data.zip archive to the server.
  5. Unarchive the data.zip archive into the data/ directory.

Official modules will be found at: data/mod/

Installing custom modules

Custom modules are modules made my other players and distributed for consumption. They come in all shapes and sizes, and can be found readily on the internet. The most popular community for this is the Neverwinter Vault.

Assuming you are using the Neverwinter Vault, find the module you want to download. Download the corresponding files and upload them to the appropriate directories on your server. All custom modules (and custom data in general) live in the user directory.

The table below shows the different file types that you could potentially find in a custom module and in which directory they need to be placed. Some modules may deviate and require that some files be place into the override folder. Be sure to read the description of the modules and any README files to ensure these are place appropriately.

File type Folder Purpose
.mod user/modules Module master file
.hak user/hak Extra game resources
.tlk user/tlk Talk-tables (descriptions, names, etc.)
.bic user/localvault Character files
.wav / .bmu user/music Music files

Startup command

cd bin/linux-x86 && ./nwserver-linux -port $SERVER_PORT -userdirectory '/home/container/user' -servername "${SERVER_NAME}" -module "${MODULE_NAME}" -publicserver "${IS_PUBLIC}" -maxclients "${MAX_CLIENTS}" -minlevel "${MIN_LEVEL}" -maxlevel "${MAX_LEVEL}" -pauseandplay "${PAUSE_AND_PLAY}" -pvp "${PVP}" -servervault "${SERVER_VAULT}" -elc "${ELC}" -ilr "${ILR}" -gametype "${GAME_TYPE}" -oneparty "${ONE_PARTY}" -difficulty "${DIFFICULTY}" -autosaveinterval "${AUTO_SAVE_INTERVAL}" -playerpassword "${PLAYER_PASSWORD}" -dmpassword "${DM_PASSWORD}" -reloadwhenempty "${RELOAD_WHEN_EMPTY}"

The parts in blue are filled in by the panel when the server starts, from the variables below.

Docker image

  • ghcr.io/ptero-eggs/yolks:debian

1 contributor

Variables

20 settings

  • Game Version

    Version of the game to install

    env
    NWN_VERSION
    default
    latest
    rules
    required|string|max:20
    • viewable
    • editable
  • Module Name

    Name of the module we want to load. Official modules are stored in `~/data` and custom modules need to be stored in `~/user`. Must match the file name exactly without the extension.

    env
    MODULE_NAME
    default
    none
    rules
    required|string
    • viewable
    • editable
  • Load Slot #

    Save game slot number to load on boot.

    env
    SAVE_SLOT
    default
    none
    rules
    nullable|numeric
    • viewable
    • editable
  • Max Number Of Clients

    Maximum number of connections to the game server.

    env
    MAX_CLIENTS
    default
    96
    rules
    required|numeric|min:1
    • viewable
    • editable
  • Minimum Level

    Minimum character level required to access the game server.

    env
    MIN_LEVEL
    default
    1
    rules
    required|numeric
    • viewable
    • editable
  • Maximum Level

    Maximum character level required to access the game server.

    env
    MAX_LEVEL
    default
    100
    rules
    required|numeric
    • viewable
    • editable
  • Pause And Play

    Toggle game pausing permissions. 0 = game can only be paused by DM 1 = game can by paused by players

    env
    PAUSE_AND_PLAY
    default
    1
    rules
    required|boolean
    • viewable
    • editable
  • PvP Mode

    The mode of PvP enabled. 0 = none 1 = party 2 = full

    env
    PVP
    default
    2
    rules
    required|numeric|in:0,1,2
    • viewable
    • editable
  • Server Vault Mode

    0 = local characters only 1 = server characters only

    env
    SERVER_VAULT
    default
    1
    rules
    required|numeric|in:0,1
    • viewable
    • editable
  • Enforce Legal Characters

    Toggle enforcement of legal characters.

    env
    ELC
    default
    1
    rules
    required|boolean
    • viewable
    • editable
  • Enforce Item Level Restrictions

    Toggle enforcement of item level restrictions.

    env
    ILR
    default
    1
    rules
    required|boolean
    • viewable
    • editable
  • Game Type

    Set which game room to post the game to. This only applies if the game is public.

    env
    GAME_TYPE
    default
    0
    rules
    required|numeric
    • viewable
    • editable
  • Toggle Single Parties

    Toggle if multiple parties are allowed.

    env
    ONE_PARTY
    default
    0
    rules
    required|boolean
    • viewable
    • editable
  • Difficulty

    Game difficulty selection. 1 = easy 2 = normal 3 = D&D hardcore 4 = very difficult

    env
    DIFFICULTY
    default
    3
    rules
    required|numeric|in:1,2,3,4
    • viewable
    • editable
  • Auto Save Interval

    Interval between autosaves in minutes.

    env
    AUTO_SAVE_INTERVAL
    default
    0
    rules
    required|numeric|min:0
    • viewable
    • editable
  • Player Password

    Password needed to join the server as a player.

    env
    PLAYER_PASSWORD
    default
    none
    rules
    nullable|string
    • viewable
    • editable
  • DM Password

    Password needed to join the server as a DM.

    env
    DM_PASSWORD
    default
    none
    rules
    nullable|string
    • viewable
    • editable
  • Server Name

    Name of the server as shown on the server browser.

    env
    SERVER_NAME
    default
    A Pterodactyl hosted server
    rules
    required|string
    • viewable
    • editable
  • Is Public Game

    Toggle indicating if this is a public or private game.

    env
    IS_PUBLIC
    default
    0
    rules
    required|boolean
    • viewable
    • editable
  • Reload When Empty

    Determines if the module state is persistent when the server is empty.

    env
    RELOAD_WHEN_EMPTY
    default
    0
    rules
    required|boolean
    • viewable
    • editable
Installation script 24 lines container ghcr.io/ptero-eggs/installers:debian entrypoint bash show
#!/bin/bash
# Neverwinter Nights Installation Script
#
# Server Files: /mnt/server

# Download the latest version from the Beamdog website
if [ -z "$NWN_VERSION" ] || [ "$NWN_VERSION" == "latest" ]; then
    NWN_VERSION=$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/beamdog/nwserver/tags' | jq -r '[."results"[]["name"] | select(test("\\d*\\.\\d*$"))][0]')
fi

cd /mnt/server
curl -o nwnee.zip -L https://nwn.beamdog.net/downloads/nwnee-dedicated-${NWN_VERSION}.zip
unzip -u nwnee.zip -d .

# Run the server once to generate default files and directories
cd bin/linux-x86 && ./nwserver-linux

# Copy generated files into the volume and update relevant paths
mv /root/.local/share/Neverwinter\ Nights /mnt/server/user
sed -i 's/\/root\/.local\/share\/Neverwinter Nights/\/home\/container\/user/g' /mnt/server/user/nwn.ini
sed -i 's/\/root\/.local\/share\/Neverwinter Nights/\/home\/container\/user/g' /mnt/server/user/nwnplayer.ini
sed -i 's/\/root\/.local\/share\/Neverwinter Nights/\/home\/container\/user/g' /mnt/server/user/settings.tml

echo "Installation complete."