latest version of darcsden, the darcs repo web UI and hosting app. This branch plus local settings runs hub.darcs.net. (http://hub.darcs.net)
root
darcsden is a darcs repository hosting platform, providing a web application for browsing and managing repos, users, and issues, and a SSH server for push/pull and quick repository creation.
Home: http://hackage.haskell.org/package/darcsden
To install:
You will need:
- Redis (for storing web session data)
- CouchDB (for storing user/repo/repository data)
Both should be running on their default port, or just edit DarcsDen/State/Util.hs to point to different ones.
You should have a "darcsden" user account (for running the app and owning the files), with a ssh key:
adduser --system --home /home/darcsden --shell /bin/bash --group --gecos DarcsDen darcsden
sudo -u darcsden ssh-keygen
Configure, build and install darcsden:
(edit src/DarcsDen/Settings.hs)
cabal install
And configure the databases:
darcsden --install
To start:
For a quick test, you can run:
darcsden
and browse to port 8900 with your server.
This package provides separate executables for the web and SSH servers, darcsden' and
darcsden-ssh', respectively. You could run them manually while logged in as user 'darcsden' via screen or dtach. Or, configure them as daemons. supervisord is one way, here are sample supervisord.conf entries.
[program:darcsden]
command=sudo -Hu darcsden /path/to/darcsden --port 8900
directory=/home/darcsden
priority=3
redirect_stderr=true
autostart=true
autorestart=true
environment=LANG="en_US.UTF-8"
[program:darcsden-ssh]
command=sudo -Hu darcsden /path/to/darcsden-ssh 22
directory=/home/darcsden
priority=3
redirect_stderr=true
autostart=true
autorestart=true
environment=LANG="en_US.UTF-8"
Note that it's important to run as darcsden, with HOME set (sudo -Hu darcsden), to ensure proper darcs cache directory selection and proper file ownership. Otherwise you will get obscure errors when serving pages.
Also the directory where the web server starts should contain darcsden's public/ directory. Or you can run it behind a web server or something that'll handle /public requests by pointing to that directory.
Here's a sample apache vhost config:
<VirtualHost *:80>
ServerName my.host.name
RewriteEngine on
ProxyPreserveHost On
ProxyErrorOverride On
RewriteRule ^/(.*) http://127.0.0.1:8900/$1 [P]
</VirtualHost>