Skynet is a service integration and management system, specially optimized for personal and home-lab use. With plugin support, you can easily embed whatever software you want to satisfy your need.
Security is considered as TOP priority in Skynet, we will not consider features that conflict with our security policy. If you find vulnerabilities, please report ASAP.
We offer pre-built x86_64
and aarch64
docker images.
- Copy
docker-compose.yml
andconf.yml
to your folder. docker-compose up
- Visit
localhost:8080
.
We do not recommend this method, use at your own risk!
You can download pre-built libraries in our release page.
We offer linux-{x86_64,i686,aarch64}
, darwin-{x86_64,aarch64}
and windows-x86_64
binaries. You might build from source if your platform is not included.
- Download the release and extract.
vim conf.yml
to modify your config.touch data.db
or copy your existing database../skynet check
to verify your config../skynet run
to start up the server.- Visit
localhost:8080
.
make build_release
make output BUILD_TYPE=release
make static
You are ready to go with files in bin
:)
You must use the command line to initialize your root user:
skynet user init
Like linux, root user can ignore all built-in privilege checkers. Remember your initial randomized password, you can change it after login.
You may add more users in the web UI or use the command line for batch add:
skynet user add <USERNAME>
Note that no permission is allowed for these users.
You can enable redis to replace the built-in memory database.
- Install redis
- Change
redis.enable
totrue
. - Modify
redis.dsn
to connect your database.
Enable SSL to secure your connection.
- Get your SSL certificate (certificate
*.crt
and key*.key
) - Change
listen.ssl
totrue
. - Modify
listen.ssl_cert
andlisten.ssl_key
to file path.
You need to enable this if Skynet is behind some kind of proxy (Nginx, Load balancer, etc.). Otherwise, you cannot obtain users' real IP.
-
Change
proxy.enable
totrue
. -
Modify
proxy.header
to theip:port
header set by the proxy server.Config example:
proxy: header: "X-Real-Address"
The proxy server should pass the following header (peer ip/port):
X-Real-Address: 192.168.0.1:12345
You can enable Google recaptcha to protect against brute force attack.
- Register recaptcha site on https://www.google.com/recaptcha/about/ (Type: V2 Checkbox).
- Change
recaptcha.enable
totrue
. - Modify
recaptcha.sitekey
andrecaptcha.secret
.
For every IP address, you can enable geoip to view the country directly.
- Get
GeoLite2-Country.mmdb
from Github or maxmind official website. - Change
geoip.enable
totrue
. - Modify
geoip.database
to the.mmdb
file path.
You can find plugins in our organization repositories or other user shares.
Use our script to download all official plugins:
./get_offical_plugins.sh
!!Please note that all plugins have the same privilege as skynet, use trusted plugins ONLY!!
In other words, run untrusted plugin = RCE
See develop note.
Skynet provides pretty formatted or JSON formatted logs. You can get WARN
and ERROR
logs from stderr
and others from stdout
. Execute skynet run -h
for more details. We only guarantee the order of printed logs. Please do not rely on notifications in database (see below).
To avoid database deadlock and performance issues, notifications are written to database asynchronously. We do not guarantee the order and success of notifications.