Documentation
¶
Overview ¶
This is a small HTTP server implementing the "photobackup server" endpoint documented here: https://github.com/PhotoBackup/api/
Written because the existing servers make me a touch sad; go means we can avoid a pile of runtime dependencies. Build-time dependencies are being kept low; bcrypt, homedir and graceful are the only luxuries. Adding gorilla mux and, perhaps, negroni, would probably be overkill.
We're trying to be compatible, so config file is INI-format: ~/.photobackup
[photobackup] MediaRoot=<path to store files in> Password=<sha512 digest of password, no salt> Port=<port>
In addition to these keys, I'm also supporting:
BindAddress=<address to bind to> PasswordBcrypt=<bcrypt of sha512 digest of plain password> HTTPPrefix=<prefix to mount HTTP server at>
The original server was intended to run over HTTP, I think, hence the client sending a SHA512'd password. We support this scheme, but the on-disc storage format is really better off being bcrypt(sha512(password)), so I've added that.
Adding BindAddress and HTTPPrefix means that mounting this behind a HTTP reverse proxy is quite doable, and lets us offload HTTPS to that as well. That's how I'm intending to use it.
I think the original servers are designed so you can connect to them using just HTTP; hence the sha512(password) scheme. This is short-sighted; the only thing it gets you is (weak) protection against sniffing if you happen to use the same password elsewhere. Sniffers in this scenario can still upload to your server and view your photos.
At some point in the future I might add direct HTTPS support as well, but I don't need it.
@author Nick Thomas <[email protected]>