The first time you run the program, it will help you create an account and your first kite.
PageKite is a very flexible tool. Read on to learn how to use it!
Here we go ...
You can download the program here.
If you are more interested in tinkering with the source code or trying experimental versions, check out our Open Source wiki pages.
pagekite.py version is currently optimized for web developers, and as such it is meant to be used from the command-line (
cmd.exe in Windows, or Terminal on the Mac).
pagekite.pyfor the first time
The following command will walk you through the process of creating your first kite:
$ pagekite.py --signup
(On Windows, the first time you double-click on the
pagekite.py icon, it will start the sign-up process automatically.)
localhost:80 on a name of your choice like so:
$ pagekite.py 80 yourname.pagekite.me
pagekite.py detects that you haven't signed up yet or are trying to use a new kite name, it will trigger the sign-up process automatically.
This may be enough to get you started. For more tips and tricks, read on!
Assuming you have a web server (for example Apache or Nginx) running on port 80 on your local machine, the following command will make it publicly visible:
$ pagekite.py 80 foo.pagekite.me
This will connect your
localhost:80 web server to the publicly visible
http://foo.pagekite.me/. More importantly, it will also allow you to use SSL/TLS encryption on
https://foo.pagekite.me/. We recommend using the encrypted versions whenever possible!
You can replace 80 with other port numbers (3000 and 8000 are common values for web development).
If you don't have a web server already installed, but just want to quickly expose a folder full of files or images, you can do so using
pagekite.py's built-in web server:
$ pagekite.py /path/to/folder foo.pagekite.me
That will make the contents of that folder visible at:
Note that for security reasons, if the folder doesn't contain an
index.html file then people will see an error when they visit the site. If you want to present them with a list of files instead, you can do this:
$ pagekite.py /path/to/folder foo.pagekite.me +indexes
Access controls can be enabled for a particular service, by using the
+password flags, like so:
$ pagekite.py 80 foo.pagekite.me +ip/22.214.171.124=ok +ip/4.5.6=ok $ pagekite.py 80 foo.pagekite.me +password/bjarni=testing
As illustrated in the IP example above, you grant access to multiple IP addresses (or /24 subnets), or multiple username/password pairs simply by adding multiple flags. When access controls are in use, unauthorized connections will be rejected.
If you just run
pagekite.py with no arguments (or double-click on the program icon on your Desktop or in a file manager), it will fly all enabled kites and services present in your configuration file. See the management section below for details on how to manage these settings.
When you sign up for service, you will be asked to choose a name for your default kite. You are not restricted to using just this name though:
CNAMEs from your own domain instead.
To create a CNAME kite, read this HowTo. To create a new
.pagekite.me name, just use it!
pagekite.py will detect that it is new and will walk you through the process of registering it.
$ pagekite.py 80 sub-foo.pagekite.me
Note: Due to browser limitations, automatic SSL encryption support is only available for names ending in
pagekite.me that contain no extra dots. This means
sub.foo.pagekite.me will not have TLS support, but the slightly uglier
sub-foo.pagekite.me will encrypt just fine - it is up to you which you choose.
You can fly multiple kites at once, by using the
AND keyword on the command-line, like so (yes it must be capitalized):
$ pagekite.py /var/www foo.pagekite.me AND 80 foo.pagekite.me:8080
If your local web development server expects incoming requests to use
foo.local in the
Host: header, and you would rather not reconfigure it,
pagekite.py can rewrite the header for you:
$ pagekite.py localhost:80 foo.pagekite.me +rewritehost $ pagekite.py foo.local:80 foo.pagekite.me +rewritehost
(Note that this technique incurs a slight performance penalty and reduces compatiblity, as it disables persistent HTTP/1.1 connections.)
pagekite.py can also expose non-web services, or bind services to particular ports, and understands a familiar syntax for defining the publicly visible name.
$ pagekite.py 22 ssh:foo.pagekite.me $ pagekite.py 3000 http://foo.pagekite.me:8080
Note that only some public-facing ports are available - consult the output from
pagekite.py to get a full list. Also, accessing non-web services requires HTTP Proxy support in the client. Please consult the HowTo wiki for details.
The definition for each kite is stored in a plain-text configuration file stored in your home directory. This file is named
.pagekite.rc on Linux and the Mac, and
pagekite.cfg on Windows. You can edit this file by hand, but it is generally more convenient to let
pagekite.py do the work.
# Print a list of all configured kites and services $ pagekite.py --list # Add services to foo.pagekite.me: $ pagekite.py --add /var/www foo.pagekite.me # Publish a folder $ pagekite.py --add 80 http:foo.pagekite.me:8080 # A local webserver $ pagekite.py --add 22 ssh:foo.pagekite.me # Enable SSH tunneling # Disabling a service: $ pagekite.py --disable ssh:foo.pagekite.me # Disabling an entire kite (all services): $ pagekite.py --disable foo.pagekite.me # Removing kites or services completely: $ pagekite.py --remove ssh:foo.pagekite.me $ pagekite.py --remove foo.pagekite.me
Still feel like reading? Check out:
Welcome to PageKite!