{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreibos7vzle6wvtud7q7kynylvqsweoclx3h6z7erje3gg5wv6fj4cy",
    "uri": "at://did:plc:ogsypfnyf6uzkppsrqgdirne/app.bsky.feed.post/3m5zflkvquob2"
  },
  "path": "/_posts/2023-04-01-tor-snowflake-v2/",
  "publishedAt": "2026-04-30T11:46:34.441Z",
  "site": "https://nickwasused.com",
  "tags": [
    "https://community.torproject.org/de/relay/setup/snowflake/standalone/debian/",
    "\"Allows people from anywhere in the world to access censored websites and applications.\"",
    "Go",
    "https://snowflake.torproject.org/",
    "https://go.dev/"
  ],
  "textContent": "# Notice\n\nI got made aware that this setup is now deprecated. You can simply follow these instructions here: https://community.torproject.org/de/relay/setup/snowflake/standalone/debian/. (Debian 12 - bookworm is required!)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThis is a guide for installing Tor Snowflake on your Raspberry Pi as systemd service.\n\nTor Snowflake: \"Allows people from anywhere in the world to access censored websites and applications.\"\n\n## Requirements\n\nI have certain requirements for this guide. Using this guide on any other system is properly unsupported! Use at your own risk.\n\n  * DietPi version v8.15.2 or above\n  * Debian version based on Bullseye (check with `cat /etc/os-release`)\n\n\n\nNotice that I am creating this guide from the view of a User account with sudo rights and a headless setup.\n\n## Install GO\n\nFirst, we need to install Go version 1.13 or higher.\n\nWe install Go using:\n\n\n    sudo dietpi-software\n\n\nNow search for `go` and select the following by pressing space. `Go: Runtime environment and package installer`\n\nAfter that, press TAB and select confirm. When back on the main page, select `install`\n\nNow reload your shell by running `exec bash` or reconnect.\n\nTo verify the Go install run `go version`, it should output something like `go version go1.20.2 linux/arm64`. Just make sure that the version is 1.13 or higher.\n\n## Snowflake\n\nNow we can start to install the snowflake.\n\nFirst change to the `/opt` directory: `cd /opt`\n\n**Notice the sudo in front!**\n\nStart by cloning the Git repository:\n\n\n    sudo git clone https://git.torproject.org/pluggable-transports/snowflake.git\n\n\nand then get ownership of the folder:\n\n\n    sudo chown -R $USER:$USER snowflake/\n\n\nNow we can start building the program itself:\n\n\n    cd snowflake/proxy && go build\n\n\nTo verify that the build is working, run `./proxy`. The output should look like: `2023/04/01 15:29:14 Proxy starting`\n\n# Autostart\n\nTo autostart the program, we are going to use systemd.\n\nStart by creating a new user:\n\n\n    sudo adduser --no-create-home --disabled-login snowflake\n\n\nThis will create the user snowflake, but we still need to give the user access to the snowflake folder:\n\n\n    sudo chown -R $USER:snowflake /opt/snowflake\n\n\nand\n\n\n    sudo chmod -R 775 /opt/snowflake/\n\n\nCreate the systemd service file like this:\n\n\n    sudo nano /etc/systemd/system/snowflake.service\n\n\nWith the following content:\n\n\n    [Unit]\n    Description=Tor Snowflake Proxy\n    After=network.target\n    StartLimitIntervalSec=0\n\n    [Service]\n    LogLevelMax=6\n    Type=simple\n    User=snowflake\n    SyslogIdentifier=snowflake\n    StandardOutput=journal\n    StandardError=journal\n    ExecStart=/opt/snowflake/proxy/proxy -summary-interval 10m\n    Restart=on-failure\n    RestartSec=120\n    TimeoutSec=300\n    PrivateTmp=true\n    NoNewPrivileges=true\n    ProtectSystem=strict\n    ProtectHome=false\n    ReadOnlyDirectories=/\n    ReadWriteDirectories=/opt/snowflake/\n\n    [Install]\n    WantedBy=multi-user.target\n\n\nTo verify that everything is working as intended, run `sudo service snowflake start` and after that `sudo service snowflake status`.\n\nThe output should look like this:\n\nTo enable the automatic start on reboot, run:\n\n\n    sudo systemctl enable snowflake.service\n\n\n# Logs\n\nThis section is useful if you want to have usage logs.\n\nWe start by editing the rsyslog config: `sudo nano /etc/rsyslog.d/50-default.conf` and add the following line\n\n\n    :programname,isequal,\"snowflake\" /var/log/snowflake.log\n\n\nTo apply this change, restart `rsyslog`: `sudo service rsyslog restart`.\n\nTo see the new log, wait up to 10 minutes or restart the `snowflake` service like this: `sudo service snowflake restart`.\n\nYou can now see the log like this: `sudo tail -f /var/log/snowflake.log` or this: `sudo cat /var/log/snowflake.log`.\n\nAfter some time, the log should have lines like `2023/04/01 15:54:08 In the last 10m0s, there were 0 connections. Traffic Relayed ↓ 0 KB, ↑ 0 KB.`; these indicate the usage of the proxy you are hosting.\n\n## Logrotate\n\nLogrotate is used to keep older logs and compress them with a defined limit.\n\nStart by creating a config file for Snowflake: `sudo nano /etc/logrotate.d/snowflake` with the following content:\n\n\n    /var/log/snowflake.log {\n        su root root\n        daily\n        rotate 5\n        compress\n        delaycompress\n        missingok\n        postrotate\n            systemctl restart rsyslog > /dev/null\n        endscript\n    }\n\n\nTo finalize everything, reboot the system: `sudo reboot`.\n\n### archive\n\nThe following links are archived versions, as the main ones could break.\n\nhttps://snowflake.torproject.org/\nhttps://go.dev/",
  "title": "Install Tor Snowflake on the Raspberry Pi with DietPi.",
  "updatedAt": "2023-04-01T00:00:00.000Z"
}