Issue
I went down a bit of rabbit hole before realizing my Docker setup was not the issue here, but rather it was the PASS environment variable I had set that was causing smp-server to exit with code 1 and go into a container reboot loop.
Steps to reproduce:
- Set up the the latest Docker container using simplexchat/smp-server:latest
- Configure the PASS environment variable such that it contains an '@' character.
PASS=passw@ord works just as well.
- Deploy the container and observe a totally silent failure (exit code 1) with no container logs. If the container strategy is set to reboot always, it will go into a reboot loop.
Recommend solutions:
- Update documentation to indicate that certain special characters are not allowed.
- Escape the input string properly when passing the argument to smp-server init.
I tried naively to apply the second recommendation and fix the command line parameter invocation, but after reading the first sentence of the set built-in documentation, I admit I didn't really pursue it further.
Debugging further
Starting an instance of the image and overriding the entrypoint to a shell gives us the opportunity to add some debug logs to the entrypoint script and invoke it manually for testing:
docker run --interactive --tty --entrypoint /bin/bash simplexchat/smp-server:latest
cd /usr/local/bin
export ADDR=simplex.exampledomain.local
export PASS=passw@rd
./entrypoint
In the entrypoint script, changing this line:
smp-server init --yes \
--store-log \
--daily-stats \
--source-code \
"$@" > /dev/null 2>&1
To this:
smp-server init --yes \
--store-log \
--daily-stats \
--source-code \
"$@"
reveals the underlying error. Now the entrypoint script fails with the following invocation error and usage example:
option --password: endOfInput
Usage: smp-server init [--disable-store-log | (-l|--store-log)]
[-d|--database DB_CONN] [--schema DB_SCHEMA]
[--pool-size POOL_SIZE] [-s|--daily-stats]
[-a|--sign-algorithm ALG] [--ip IP] [-n|--fqdn FQDN]
[--no-password | --password PASSWORD]
[--control-port | --control-port PORT]
[--socks-proxy | --socks-proxy PROXY]
[--own-domains DOMAINS]
[--source-code | --source-code URI]
[--operator OPERATOR_NAME]
[--operator-country OPERATOR_COUNTRY]
[--hosting HOSTING_NAME]
[--hosting-country HOSTING_COUNTRY]
[--hosting-type HOSTING_TYPE]
[--server-country SERVER_COUNTRY]
[--operator-website WEBSITE] [--web-path PATH]
[--disable-web] [-y|--yes]
Initialize server - creates /etc/opt/simplex and /var/opt/simplex directories
and configuration files
Thank you,
-DM
Issue
I went down a bit of rabbit hole before realizing my Docker setup was not the issue here, but rather it was the PASS environment variable I had set that was causing smp-server to exit with code 1 and go into a container reboot loop.
Steps to reproduce:
PASS=passw@ordworks just as well.Recommend solutions:
I tried naively to apply the second recommendation and fix the command line parameter invocation, but after reading the first sentence of the set built-in documentation, I admit I didn't really pursue it further.
Debugging further
Starting an instance of the image and overriding the entrypoint to a shell gives us the opportunity to add some debug logs to the entrypoint script and invoke it manually for testing:
docker run --interactive --tty --entrypoint /bin/bash simplexchat/smp-server:latestIn the entrypoint script, changing this line:
smp-server init --yes \ --store-log \ --daily-stats \ --source-code \ "$@" > /dev/null 2>&1To this:
smp-server init --yes \ --store-log \ --daily-stats \ --source-code \ "$@"reveals the underlying error. Now the entrypoint script fails with the following invocation error and usage example:
Thank you,
-DM