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.
"cabal install darcsden" will install darcsden and darcsden-ssh
executables with generic settings. In particular, the web app's base url
will be "http://localhost:8900", and multi-user features will be enabled.
For more control, get the darcsden source, adjust
src/DarcsDen/Settings.hs, and run "cabal install" in the top source
directory. There are also several optional build flags in darcsden.cabal,
mainly to assist with building on windows.
To run darcsden you also need:
- Redis (for storing web session data)
- CouchDB (for storing user/repo/repository data)
Both should be running on their default port, or you can change that in
Settings.hs. You should configure them by running:
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
To avoid obscure errors due to mixed file ownership in ~/.darcs/cache,
always run darcsden as the darcsden user, with $HOME set properly.
So if using sudo, include the -H flag, like this:
sudo -Hu darcsden COMMAND...
The directory where you start the web app should contain darcsden's
public/ directory. Or you can run it behind a web server that'll serve
/public/* requests from that directory.
Some features require extra configuration to work:
- Create developer applications for the oauth services:
- Set callback urls:
- Github: same as your baseUrl
- Google: multiple callbacks:
- baseUrl ++ "register/google/response"
- baseUrl ++ "login/google/response"
- baseUrl ++ "sync/google/response"
- Enter Client ID and Client secret into environment variables:
- Github: Add these lines to your shell startup
- Google: Add these lines to your shell startup
- Configure your default sendmail to be able to send emails
- Edit sendEmail, and sendName to the email address you can use
- For proper file type detection, ensure that you have xdg-utils installed.
- Set xdgMimePath appropriately if xdg-mime is not in PATH
- Download and start selenium server from http://docs.seleniumhq.org/download/
- Ensure that you have configured OAuth
- You need a test google and github account:
- export GOOGLE_USERNAME, GOOGLE_PASSWORD, GITHUB_USERNAME,
- run ./dist/build/darcsden-test/darcsden-test
For a quick test, run:
sudo -Hu darcsden darcsden
and visit http://localhost:8900 (or other url configured in Settings.hs)
in your web browser.
This package provides separate executables for the web and SSH servers,
darcsden-ssh respectively. You could run them manually
while logged in as the
darcsden user via screen or dtach. Or, configure them
as daemons. See
darcsden.god, or these sample supervisord.conf entries:
command=sudo -EHu darcsden /path/to/darcsden --port 8900
command=sudo -EHu darcsden /path/to/darcsden-ssh 22
Here's a sample apache vhost config:
RewriteRule ^/(.*) http://127.0.0.1:8900/$1 [P]
darcsden indirectly depends on two external libraries: OpenSSL and pcre.
The -f-ssh flag can be used to disable the ssh server and remove the
dependency on OpenSSL.
The -f-closing flag disables the ability for checkins to automatically
close issues, removing the dependency on pcre.
OpenSSL can be installed from http://slproweb.com/products/Win32OpenSSL.html -
download "Win32 OpenSSL v1.0.1e" or whatever similar version is current.
[At the time of writing, darcs doesn't work with 64 bit Windows, but
if this changes then a 64 bit version can be downloaded from the same location.]
Pick a directory to install it to, e.g. c:/OpenSSL-Win32 - and install HsOpenSSL
cabal install HsOpenSSL --extra-include-dirs="c:/OpenSSL-Win32/include" --extra-lib-dirs="c:/Win32OpenSSL"
Running as a Windows service:
darcsden depends on having CouchDB and redis running, so it also
makes sense to install these as services, though it's not essential.
redis can be setup as a Windows service using
The redis service name is redis-instance.
CouchDB comes as a service already.
The CouchDB service name is something like
"Apache CouchDB01cd861ad1dbd850", look for "CouchDB" in the output
of "sc query" to get the exact name.
To install darcsden as a Windows service given the above names for
the redis and CouchDB services, identify the path to darcsden.exe
and to the darcsden source tree. Then alter the following command
appropriately and run it all on one line:
sc create DarcsDen
binPath= "c:\path\to\darcsden.exe --root c:\path\to\source\of\darcsden --service"
depend= redis-instance/"Apache CouchDB01cd861ad1dbd850"
To uninstall the service, use "sc delete DarcsDen".
darcsden is a small, clean codebase that is fun to hack on. Discussion
takes place on the #darcs IRC channel, and useful changes will quickly
be deployed at hub.darcs.net, providing a tight dogfooding/feedback
loop. Here's how to contribute a patch there:
- register at hub.darcs.net
- add your ssh key in settings so you can push
- fork your own branch: http://hub.darcs.net/simon/darcsden , fork
- copy to your machine: darcs get http://hub.darcs.net/yourname/darcsden
- make changes, darcs record
- push to hub: darcs push firstname.lastname@example.org:darcsden --set-default
- your change will appear at http://hub.darcs.net/simon/darcsden/patches
- discuss on #darcs, or ping me (sm, email@example.com) to merge it
Alex Suraci created darcsden. Simon Michael led this release, which
includes contributions from Alp Mestanogullari, Jeffrey Chu, Ganesh
Sittampalam, and BSRK Aditya (sponsored by Google's Summer of Code).
And last time I forgot to mention two 1.0 contributors: Bertram
Felgenhauer and Alex Suraci.
darcsden depends on Darcs, Snap, GHC, and other fine projects from the
Haskell ecosystem, as well as Twitter Bootstrap, JQuery, and many more.