-
Notifications
You must be signed in to change notification settings - Fork 23
Get started
Download the latest laitos software from the releases page.
Alternatively, compile the software manually by cloning this repository and then
run go build
.
A configurable laitos component belongs to one of the three categories:
- Apps - reading news and Emails, make a Tweet, ask about weather, etc.
- Some apps do not require manual configuration and they are pre-enabled.
- Daemons - web/mail/DNS servers, chat bots, etc. Many daemons are capable of accepting app command input and allow command execution protected by a password.
- Web services - HTML-based utilities, web-hooks for integration with 3rd party services, etc.
Follow the links in component list to craft your very own configuration in JSON.
As an example, here we use laitos DNS server to provide a safer and ad-free web experience at home, and enable a couple of web utilities:
{
"DNSDaemon": {
"AllowQueryFromCidrs": ["35.196.0.0/16", "37.228.0.0/16"]
},
"HTTPDaemon": {},
"HTTPHandlers": {
"CommandFormEndpoint": "/cmd",
"FileUploadEndpoint": "/upload",
"InformationEndpoint": "/info",
"LatestRequestsInspectorEndpoint": "/latest_requests",
"ProcessExplorerEndpoint": "/proc",
"RequestInspectorEndpoint": "/myrequest",
"WebProxyEndpoint": "/proxy"
}
}
Assume that latios software is in current directory, run the following command:
sudo ./laitos -config <PATH TO JSON FILE> -daemons <LIST>
Note that:
- Web, mail, and many other daemons usually bind to privileged ports,
Run laitos using
sudo
to ensure their proper operation. - Replace
<PATH TO JSON FILE>
by the relative or absolute path to your configuration file. - Replace
<LIST>
by daemon names to start. Use comma to separate names (e.g.dnsd,smtpd,httpd
). Here are the names:-
dnsd
- DNS server for ad-free and safer browsing experience -
httpd
- Web server secured by TLS certificate -
insecurehttpd
- Web server without TLS encryption -
simpleipsvcd
- Simple IP services that were popular in the nostalgia era of Internet -
smtpd
- Mail server that forwards all received Emails to your personal addresses -
snmpd
- Network management server that serves laitos program statistics -
telegram
- Telegram messenger chat bot that runs app commands -
phonehome
- Send telemetry reports of this computer to your laitos servers -
plainsocket
- Telnet-compatible server that runs app commands -
maintenance
- Automated server maintenance and program health report
-
- Apps are enabled automatically once they are configured in the JSON file. Some apps such as the RSS News Reader are automatically enabled via their built-in default configuration.
For ease of deployment, when LAITOS_CONFIG
environment variable is not empty,
laitos will load its configuration from there.
When LAITOS_INDEX_PAGE
environment variable not empty, laitos will use its
content for the index page served by HTTP daemon(s).
Check out environment variable usage examples in the Kubernetes example and the example in Dockerfile
Be aware that the combined size of all environment variables generally cannot exceed ~2MBytes.
The images of a (usually) up-to-date version of laitos are uploaded to Docker Hub hzgl/laitos.
If you wish to customise the image to your needs, feel free to use the Dockerfile
from GitHub repository as a reference.
Check out the Kubernetes deployment example for a quick-start of hosting laitos on Kubernetes.
laitos runs well on all popular cloud vendors, it supports cloud virtual machines for a straight-forward installation, as well as more advanced cloud features such as AWS Elastic Beanstalk and AWS Lambda (in combination with API gateway). Check out the cloud deployment tips.
laitos is well optimised for running on Windows server and Windows desktop.
Instead of manually running laitos.exe
in command prompt, check out this
PowerShell script
that helps to start laitos automatically in the background using Task Scheduler.
laitos is extremely reliable thanks to its many built-in mechanisms that make automated attempts to restart and isolate faulty components. The built-in mechanisms are fully automatic and do not require intervention:
- Automatically recover from transient errors when contacting external resources, such as API services on the public Internet.
- Every daemon automatically restarts in case of a transient initialisation error.
- In the unlikely event of a program crash, the laitos program automatically restarts itself to recover.
- In the extremely unlikely event of repeated program crashes in short succession (20 minutes), laitos will attempt to automatically isolate the faulty daemon by removing daemons before the next restart - shedding the heavier daemons (e.g. DNS) first before shedding the lighter daemons (e.g. HTTP daemon).
Optionally, laitos can send server owner a notification mail when a program crash occurs. To enable the notification, follow outgoing mail configuration and then specify Email recipients in program JSON configuration:
{
...
"SupervisorNotificationRecipients": [
"[email protected]"
],
...
}
Please use Github issues to report program crashes. Notification mail content and program output contain valuable clues for diagnosis - please retain them for an issue report.
Use the following command line options with extra care:
Flag | Value data type | Meaning |
---|---|---|
-debug | true/false | Print stack traces to standard error upon receiving the interrupt signal SIGINT. |
-gomaxprocs Num | Integer | Specify maximum number of concurrent goroutines. The default value is the number of CPU cores/threads. |
-disableconflicts | true/false |
Automatically stop and disable the following daemons that may interfere with laitos:
|
-awslambda | true/false |
Launch laitos as a handler for AWS Lambda function.
See cloud deployment tips for the detailed usage. |
-awsinteg | true/false |
The master switch for turning on all points of integration with AWS infrastructure resources such as S3, SNS, SQS, Kinesis Firehose.
See cloud deployment tips for the detailed usage. |
-prominteg | true/false |
The master switch for turning on all points of integration with prometheus metrics exporter.
See Web service - prometheus metrics exporter for the detailed usage. |
-profhttpport PORT | Integer | Start an HTTP server on localhost:PORT to serve program profiling data at URL location "/debug/pprof/{cmdline,profile,symbol,trace}". |
Table of Contents
- Home
- Get started
- Component list
- Tips for running on public cloud
- Tips for using apps over satellite
- laitos terminal
Daemon Components
- DNS server
- Mail server
- Web server
- Web proxy server
- Telnet server
- Telegram chat-bot
- Simple IP services server
- SNMP server
- System maintenance
- Phone home telemetry
Web Service Components
- Twilio telephone/SMS hook
- Microsoft chat bot hook
- The Things Network LORA tracker integration
- Recurring commands
- App command form
- Simple app command execution API
- GitLab browser
- Temporary file storage
- Simple web proxy
- Desktop on a page (virtual machine)
- Read telemetry records
- Program health report
- System process explorer
- Prometheus metrics exporter
- HTTP request inspector
- HTTP request logger
Apps