Lamplighter

By Lantern

Leave a light on for someone.

Lamplighter turns a computer you already have into a way around censorship. Run it at home or on a server, and Lantern sends people in censored countries to the open internet through it.

Lantern's volunteer network, live.

    One node, two ways to help

    Lamplighter is lantern-box, the same server Lantern runs around the world, set up to take its instructions from Lantern. Nothing to configure. It registers itself, gets fresh credentials every hour, and starts helping.

    A direct route

    Your node asks your router to forward one TCP port, over UPnP, NAT-PMP or PCP, and Lantern's apps connect straight to it. Lantern checks it can reach your node before sending anyone. On a server, open the port in its firewall instead.

    A volunteer relay

    It also runs Lantern's Unbounded volunteer, which carries encrypted traffic over WebRTC between people in censored countries and Lantern's servers. It needs no open port, so it works on any network.

    When you stop the node, it removes its port forward and tells Lantern to stop sending people to it.

    Light one

    One command, then it starts on its own every time the computer does.

    With Homebrew, on Apple silicon or Intel. Homebrew on Linux works the same way.

    brew install getlantern/tap/lamplighter
    brew services start lamplighter
    Check on it
    brew services info lamplighter
    Logs
    tail -f $(brew --prefix)/var/log/lamplighter.log
    Stop it
    brew services stop lamplighter

    Settings

    How you pass them depends on how you installed the node:

    • Linux: run the installer again with LANTERN_NODE_ARGS set, as above. It saves exactly those flags, replacing any from before, and restarts the node with the same identity and port. To clear them, use LANTERN_NODE_ARGS="". Rerunning it without LANTERN_NODE_ARGS at all, as to upgrade, keeps the saved flags.
    • Docker: run docker stop lantern-node && docker rm lantern-node, then the docker run command again with your flags at the end. The lantern-node volume keeps its identity and port.
    • Homebrew: put the flags on one line, separated by spaces and without quotes, in etc/lamplighter.args under Homebrew's prefix (brew --prefix shows it), then run brew services restart lamplighter. To clear them, empty the file and restart.
    --bandwidth-limitCaps the volunteer relay's traffic in each direction, such as 10mbit or 2MB/s.
    --max-peersHow many people the volunteer relay serves at once.
    --portListen on this port instead of a random one.
    --no-port-mappingDon't ask the router to forward the port, if you forward it yourself.

    Before you start

    Anyone can light one

    There's no sign-up. Install it on a computer in a country without internet censorship, and it starts helping right away. Lamplighter helps from the outside in, so it doesn't run in censored countries.

    Websites see your address

    People who connect straight to your node browse through your connection, so the sites they visit see your IP address, and their Lantern app learns it too. The volunteer relay is different: its traffic leaves through Lantern's servers.

    You choose the bandwidth

    --bandwidth-limit caps the volunteer relay. Direct connections aren't capped yet, so on a metered connection, keep an eye on your usage.

    What your node sees

    Like every Lantern volunteer, your node sees the IP addresses of the people it helps. For direct connections it also sees which sites they visit, though not what's on secure (HTTPS) pages.

    The port is random

    Each node picks its own port the first time it runs and keeps it, so nodes can't be found by scanning for a well-known port. The node's log shows which one it chose.