Skip to content

Self-Hosting

If you prefer hosting with Docker, see Docker instead.

Install nodejs and npm

For Debian, Ubuntu: packages in the repository are so old, consider installing them with NodeSource. Minimal required version is NodeJS 18.

Other distros:

# CentOS
sudo yum install nodejs
# Arch
sudo pacman -S nodejs npm
# Alpine
doas apk add nodejs npm

Create a user for txtdot

Almost all distros except Alpine:

sudo useradd -r -m -s /sbin/nologin -U txtdot
sudo -u txtdot bash

Alpine Linux with busybox and doas:

doas addgroup -S txtdot
doas adduser -h /home/txtdot -s /sbin/nologin -G txtdot -S -D txtdot
doas -u txtdot bash

Build, config and launch

Clone the git repository, cd into it:

git clone https://github.com/txtdot/txtdot.git src
cd src

Copy and modify the sample config file (see the Configuring section):

cp .env.example .env
nano .env

Install packages, compile TS:

npm install
npm run build

Manually start the server to check if it works (Ctrl+C to exit):

npm run start

Log out from the txtdot account:

exit

Add txtdot to autostart

Either using systemd unit file:

wget https://raw.githubusercontent.com/TxtDot/txtdot/main/config/txtdot.service
sudo chown root:root txtdot.service
sudo chmod 644 txtdot.service
sudo mv txtdot.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable txtdot
sudo systemctl start txtdot

Or using OpenRC script:

wget -O txtdot https://raw.githubusercontent.com/TxtDot/txtdot/main/config/txtdot.init
doas chown root:root txtdot
doas chmod 755 txtdot
doas mv txtdot /etc/init.d/
doas rc-update add txtdot
doas rc-service txtdot start

Or using crontab:

sudo crontab -u txtdot -e
# The command will open an editor
# Add this line to the end of the file:
@reboot sleep 10 && cd /home/txtdot/src && npm run start
# Save the file and exit