Quoth Tony Mendoza <[email protected]>:
> Quick question (or maybe not), but how are these being hosted?   Is this done 
> on a cloud provider vm platform?   Or is this being done in a traditional DC 
> using real hardware?
> 
> Just curious to know how this is being done because I would like to do 
> something similar. 

Currently, it's hosted on vultr, but there are
a number of hosts that you can use.

As far as how it's actually done:

Git goes over git/serve in /rc/bin/service:

        cpu% cat /rc/bin/service/tcp9418
        #!/bin/rc
        exec git/serve -r/usr/git

the '-r' path is implicitly prepended on to
any repositories that are cloned, so eg:

        git/clone git://host.com/repo/path

clones

        /usr/git/repo/path

The authenticated protocol, hjgit, is the same
as the unauthenticated git:// protocol, but with
'tlssrv -a' wrapping the connection to handle auth
and encryption. The '-w' flag on git/serve enables
writing to the repo.

        cpu% cat /rc/bin/service/tcp17021
        #!/bin/rc
        exec tlssrv -a /bin/git/serve -wr/usr/git

Our encrypted 'gits://' extension is the same,
but with a cert, and its key in factotum:

        cpu% cat /rc/bin/service/tcp9419
        #!/bin/rc
        exec tlssrv -c/sys/lib/tls/git/git.cert /bin/git/serve -r/usr/git

That gets you a fully functional git server,
that hosts its code in /usr/git.

The website is served using tcp80 and execfs:

        cpu% cat /bin/cpurc.local
        auth/none execfs -s git.execfs /sys/lib/tcp80/gitrules

        cpu% cat /rc/bin/service/tcp80
        #!/bin/rc
        # some ns trickery to allow serving static data,
        # we can probably clean this up.
        bind /usr/web /mnt/static
        mount /srv/git.execfs /usr/web
        bind /mnt/static /usr/web/static
        rfork n
        exec /bin/tcp80

And the code for the web ui is more or less a modified
version of this code:

        http://shithub.us/ori/shithub/HEAD/files.html

There's also a more minimal proof of concept that I
did before phil9 ran with it and improved it here:

        http://shithub.us/ori/git9/HEAD/extra/gitls/f.html

It's less complete, but probably easier to read and
understand.


------------------------------------------
9fans: 9fans
Permalink: 
https://9fans.topicbox.com/groups/9fans/T7dfa66085e395bcb-Ma7f7eac030ace173c4260adc
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

Reply via email to