1. PageKite

    Bjarni Rúnar Einarsson • bre@pagekite.net

    RMLL 2011, Strasbourg

    A project sponsored by the Rannís technology development fund.

  2. A big goal:
    Freedom in the Web

  3. Companies control our data!



  4. On centralization...

  5. Can we ...
    Host our own sites?

  6. Why not? A bit of history.

    Once upon a time ...

    1. Web-servers were "high tech"
    2. Servers were expensive and "high tech"
    3. Desktops were insecure.
    4. We ran out of IPs!   ... on 03.02.2011.

  7. Enabling (web)servers everywhere

    A server on every computer! But how?

  8. Components of a reverse proxy solution

    Three roles:

    1. The Server
      On your computer: Apache? Diaspora? OpenSSH?
    2. The Front-End
      A reverse proxy server, in "the cloud".
      Public IP address, fast connection.
    3. The Back-End
      On your computer.
      Connects the Server to one or more Front-Ends.
      Updates DNS, reconnects as necessary.
  9. How it works (diagram)

  10. pagekite.py + pagekite.net

  11. Introducing pagekite.py

    pagekite.py implements a tunneled reverse proxy.

  12. Limitations

    There are some technical limitations ...

    • HTTP
      HTTP/1.0 and 0.9 might not send Host: headers.
    • HTTPS
      Relies on SNI (variable browser support)
      ... or TLS cert at front-end (so not end-to-end)
    • SSH, VNC, ...
      Relies on HTTP Proxy support in the client.

    Needing a front-end isn't optimal. But it works pretty well!

  13. A trivial example

    This is one way to enable SSH and make a web server on localhost visible as http://bar.foo.net/, ...

    foo.net $ sudo pagekite.py --isfrontend \
     --ports=80,443 --rawports=22 \
     --domain=raw,http,https:*.foo.net:s3cr37
    
    
    laptop $ pagekite.py \
     --frontend=foo.net:443 \
     --backend=http:bar.foo.net:localhost:8000:s3cr37 \
     --backend=raw/22:bar.foo.net:localhost:22:s3cr37
    
    

    (usually one uses a configuration file)

  14. Introducing pagekite.net

    pagekite.net is FOSS start-up: a public Front-End service

  15. Using pagekite.net

    Same example as before, this time using pagekite.net ...

    laptop $ pagekite.py \
     --defaults \
     --backend=http:foo.pagekite.me:localhost:8000:s3cr37 \
     --backend=raw/22:foo.pagekite.me:localhost:22:s3cr37
    
    

    Bonus: https://foo.pagekite.me/ - zero config SSL!

  16. No static IPs
    No router config
    No firewall config
    No crypto config

    ... it just works!

  17. What people use PageKite for

    Some of the use-cases I have seen so far:

    Thimbl, Tahoe-LAFS, VLC video, FreedomBox, ... basically any time the network gets in the way!

  18. Demos and Q and A?


    Demos?
    Questions?


    www.pagekite.org

    www.pagekite.net/slides/rmll2011/

    irc.freenode.net: #pagekite

  19. Bonus FAQ slide!

  20. Thank you!



    Merci beaucoup, RMLL !


    www.pagekite.org

    www.pagekite.net/slides/rmll2011/

    irc.freenode.net: #pagekite