rowan.id.au— Piers Rowan

HomePiROS › SERVICES.md

PiROS services

Services are root-managed daemons (aquatic-authors theme). Manage them from the console as root:

admin service list                 # what exists + running/stopped
admin service create <name>        # mint the service identity (one-time; instant now)
admin service start  <name>        # run it
admin service stop   <name>        # stop it
admin service logs   <name> [file] # read its logs (from services/<name>/logs)

Each service runs as its own no-login user, with its store at /data/<name>/ (root can browse it via the god-view: ls /data/<name>/files, cat /data/<name>/...). By default charon auto-starts on boot; the others you start explicitly.


charon — SSH (port 2222)

Kernel-hosted SSH daemon. Password and publickey auth; answers keepalives so idle sessions hold.

returns to accept() immediately, so several users hold sessions at once (there's no head-of-line blocking — a live session no longer stalls the next login). Concurrency is bounded by the scheduler task table (MAX_TASKS = 8, so ~3–5 sessions alongside the other services); when it's full a new connection is refused cleanly with a one-line hint (too many concurrent sessions, try again).

tintin — HTTP web server (port 80)

Static files + dynamic *.psh pages. Serves from the tintin user's store.

whatpath
Doc root (default)/data/tintin/files/default/www/
Index fileindex.html
Config file/data/tintin/files/server.conf
Logs/data/tintin/logs/

server.conf keys (key = value, # comments):

root  = default/www      # doc root, RELATIVE to /data/tintin/files/
index = index.html       # directory index
port  = 80

Fallbacks if there's no server.conf: default/config/default.conf, then built-in (root=default/www, index=index.html, port=80). Any *.psh file under the root is run through the psh interpreter and its output is the response body (PHP-style: $_GET/$_POST, qq_query for SQL).

To publish a page: put HTML/psh under /data/tintin/files/default/www/ (e.g. edit /data/tintin/files/default/www/index.html with prano), then admin service start tintin.

nemo — FTP server

File transfer in and out (this is how you get files onto the box — see below). PASV preferred, active PORT supported; STOR (upload) and RETR (download) both work. Serves each user's files/.

queequeg — SQL server (Queequeg)

The database engine. Clients:


Getting files onto the box

There is no scp server yet — PiROS's scp/argo owner:name are inter-user publish/fetch, not network transfer, and charon serves only a shell channel. So mac scp file pros:… will not work. Two ways in:

  1. FTP via nemo (recommended for binaries like a package tar): admin service start nemo, then

from your Mac upload with an FTP client / curl -T. The file lands in that user's files/.

  1. Type / edit small text with prano directly on the box.

A native scp/sftp subsystem in charon is a future item.