Skip to content

Instantly share code, notes, and snippets.

@Delivator
Created May 24, 2020 17:43
Show Gist options
  • Save Delivator/ce281a5cce560050bdfbb8c966618f9a to your computer and use it in GitHub Desktop.
Save Delivator/ce281a5cce560050bdfbb8c966618f9a to your computer and use it in GitHub Desktop.
nginx skynet.local config
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
proxy_cache_path temp/skynet levels=1:2 keys_zone=skynet:10m inactive=1d max_size=10g use_temp_path=off;
server {
listen 80;
server_name skynet.local;
client_max_body_size 10G;
location / {
root html;
index index.html index.htm;
}
location /skynet/skyfile {
proxy_read_timeout 600;
if ($request_id ~* "(\w{2})(\w{2})(\w{2})(\w+)") {
set $dir1 $1;
set $dir2 $2;
set $dir3 $3;
set $dir4 $4;
}
# proxy this call to siad endpoint (make sure the ip is correct)
#
# note that we point uploads to port '9970', do this when you want to
# run in a configuration where you have two siad instances, one for
# downloads and one for uploads. This drastically improves the up - and
# download speed of your portal. When running your portal in this double
# siad setup, make sure only the download portal runs in 'portal mode'.
# The upload siad can be run in normal mode. Set the port to '9980' if
# you do not want to run your portal in the double siad setup.
proxy_pass http://127.0.0.1:9980/skynet/skyfile/skynet.local/$dir1/$dir2/$dir3/$dir4$is_args$args;
proxy_set_header Expect $http_expect;
add_header Access-Control-Allow-Origin *;
proxy_hide_header Access-Control-Allow-Origin;
# make sure to override user agent header - siad requirement
proxy_set_header User-Agent: Sia-Agent;
# replace BASE64_AUTHENTICATION with base64 encoded <user>:<password>
# for sia user is empty so it's just :<password>
# to generate the passcode use https://www.base64encode.org or any other base64 encoder
proxy_set_header Authorization "Basic BASE64_AUTHENTICATION";
}
location ~ "^/([a-zA-Z0-9-_]{46}(/.*)?)$" {
# we need to explicitly use set directive here because $1 will contain the skylink with
# decoded whitespaces and set will re-encode it for us before passing it to proxy_pass
set $skylink $1;
proxy_read_timeout 600;
# proxy this call to siad /skynet/skylink/ endpoint (make sure the ip is correct)
proxy_pass http://127.0.0.1:9980/skynet/skylink/$skylink$is_args$args;
proxy_set_header Access-Control-Allow-Origin: *;
# make sure to override user agent header - siad requirement
proxy_set_header User-Agent: Sia-Agent;
# make sure the Skynet-File-Metadata header gets exposed in the response
add_header Access-Control-Expose-Headers skynet-file-metadata;
# if you are expecting large headers (ie. Skynet-Skyfile-Metadata), tune these values to your needs
#proxy_buffer_size 128k;
#proxy_buffers 4 128k;
# cache frequent (> 10) downloads for 24 hours
proxy_cache skynet;
proxy_cache_key $uri;
add_header Cache-Control public;
expires max;
etag on;
# proxy_cache_min_uses 10;
# proxy_cache_valid 200 1440m;
}
location ~ "^/file/([a-zA-Z0-9-_]{46}(/.*)?)$" {
# we need to explicitly use set directive here because $1 will contain the skylink with
# decoded whitespaces and set will re-encode it for us before passing it to proxy_pass
set $skylink $1;
proxy_read_timeout 600;
# proxy this call to siad /skynet/skylink/ endpoint (make sure the ip is correct)
# this alias also adds attachment=true url param to force download the file
proxy_pass http://127.0.0.1:9980/skynet/skylink/$skylink?attachment=true&$args;
proxy_set_header Access-Control-Allow-Origin: *;
# make sure to override user agent header - siad requirement
proxy_set_header User-Agent: Sia-Agent;
# make sure the Skynet-File-Metadata header gets exposed in the response
add_header Access-Control-Expose-Headers skynet-file-metadata;
# if you are expecting large headers (ie. Skynet-Skyfile-Metadata), tune these values to your needs
#proxy_buffer_size 128k;
#proxy_buffers 4 128k;
# cache frequent (> 10) downloads for 24 hours
proxy_cache skynet;
proxy_cache_key $uri;
# proxy_cache_valid 200 1440m;
}
}
}
@Delivator
Copy link
Author

Delivator commented May 27, 2020

Localhost Skynet Webportal

Using your own sia node as a webportal has the benefit, that the files are in your control. Which means better privacy and you control how long the file should be pinned.

Setup

This assumes you have sia already running in the background either by using Sia-UI or the sia deamon.

  • Download nginx for windows
  • Extract it to a location of your choice, eg. C:\nginx
  • Replace the config at nginx\conf\nginx.conf with this config
  • Start nginx with start .\nginx.exe
  • Edit your hosts file, start powershell as admin, type notepad C:\Windows\System32\drivers\etc\hosts and paste 127.0.0.1 skynet.local at the bottom of the file and save the file

After this you can upload files to http://skynet.local/ like using any other portal.

If you want to use the web ui of siasky.net, clone the latest version of https://github.com/NebulousLabs/skynet-webportal/ and build the ui with yarn. Then place the files from skynet-webportal/public in nginx\html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment