documentation/docs/selfhost.md

2.4 KiB

Self-Hosting

Without Docker

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

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 + 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 Environment 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

With Docker

Docker Engine and Docker Compose are required.

Note that built images are not provided via Docker Hub. If you can't or don't want to build them on your server and don't want to setup a CI/CD system, let us know, we'll consider setting up a GitHub Actions workflow.

git clone https://github.com/txtdot/txtdot.git
cd txtdot
docker compose build
docker compose up -d