Shared server with SpeedyExpress. PinDelivery runs on separate ports, directories, databases, and systemd services.
| Port | Service | Owner |
|---|---|---|
| 80 | Nginx HTTP | Shared |
| 443 | Nginx HTTPS | Shared |
| 3000 | Wiki.js | Fabricus |
| 8081/8082 | SpeedyExpress BE | Speedy (DO NOT TOUCH) |
| 8090 | SpeedyExpress Prod BE | Speedy (DO NOT TOUCH) |
| 8101 | PinDelivery Dev BE | PinDelivery |
| 8102 | PinDelivery Prod BE | PinDelivery |
WARNING: Never modify SpeedyExpress services, ports, or configs. They belong to a separate business entity on the same server.
/opt/pindelivery/
PinDeliveryDev # Dev backend binary
dev.env # Dev environment variables
prod.env # Prod environment variables
Fonts/ # PDF fonts (DejaVuSans)
logo.png # PDF logo for labels
data/ # Data directory
/var/www/pindelivery/
admin/ # Prod admin frontend files
client/ # Prod client frontend files
dev-admin/ # Dev admin frontend files
dev-client/ # Dev client frontend files
/usr/local/bin/
PinDeliveryProduction # Prod backend binary
/opt/pindelivery/PinDeliveryDev/opt/pindelivery/dev.envsudo systemctl start/stop/restart/status pindelivery-dev/usr/local/bin/PinDeliveryProduction/opt/pindelivery/prod.envsudo systemctl start/stop/restart/status pindelivery-prod/usr/local/bin/node /opt/wiki/server/opt/wiki/config.yml/opt/wiki/data/wiki.sqlitesudo systemctl start/stop/restart/status wikiPinDelivery configs are in /etc/nginx/conf.d/:
pindelivery-dns.conf - domain-based server blockspindelivery-ip.conf - IP-based dev access (ports 8180/8181)wiki-fabricus.conf - Wiki.js reverse proxyDo NOT edit
/etc/nginx/nginx.confdirectly - it contains SpeedyExpress blocks.
| Server Name | Action |
|---|---|
api.pindelivery.rs |
proxy_pass to 127.0.0.1:8102 |
dev.api.pindelivery.rs |
proxy_pass to 127.0.0.1:8101 |
admin.pindelivery.rs |
serves /var/www/pindelivery/admin/ |
pindelivery.rs |
serves /var/www/pindelivery/client/ |
dev.admin.pindelivery.rs |
serves /var/www/pindelivery/dev-admin/ |
dev.pindelivery.rs |
serves /var/www/pindelivery/dev-client/ |
wiki.fabricus.tech |
proxy_pass to 127.0.0.1:3000 |
All HTTPS via Let's Encrypt (certbot with auto-renewal).
Managed via Loopia.rs XML-RPC API.
https://api.loopia.rs/RPCSERVfabricus@loopiaapi| Subdomain | Type | Value |
|---|---|---|
@ |
A | 89.216.87.98 |
www |
A | 89.216.87.98 |
admin |
A | 89.216.87.98 |
api |
A | 89.216.87.98 |
dev |
A | 89.216.87.98 |
dev.admin |
A | 89.216.87.98 |
dev.api |
A | 89.216.87.98 |
Managed via separate DNS provider (not Loopia). Root domain points to Google (199.36.158.100).
| Subdomain | Type | Value |
|---|---|---|
wiki |
A | 89.216.87.98 |
Same MongoDB instance as SpeedyExpress but separate databases.
| Database | Purpose |
|---|---|
PinDeliveryDev |
Development data |
PinDeliveryProd |
Production data |
Authentication required. Credentials stored in dev.env / prod.env on the server.
Managed by certbot with nginx plugin. Auto-renewal via systemd timer.
Domains with certs:
pindelivery.rs, www.pindelivery.rsadmin.pindelivery.rsapi.pindelivery.rsdev.pindelivery.rsdev.admin.pindelivery.rsdev.api.pindelivery.rswiki.fabricus.techCheck service health:
sudo systemctl status pindelivery-dev
sudo systemctl status pindelivery-prod
sudo systemctl status wiki
sudo systemctl status nginx
sudo systemctl status mongod
View logs:
journalctl -u pindelivery-dev --since "1 hour ago" --no-pager
journalctl -u pindelivery-prod --since "1 hour ago" --no-pager
journalctl -u wiki --since "1 hour ago" --no-pager