Camper
Barcamp-Tools
Install / Use
/learn @comlounge/CamperREADME
Camper - Barcamp-Tools
Requirements
- Python 2.7
- virtualenv
- MongoDB
- Etherpad Lite with admin access
For development (esp. JS/CSS):
- node.js
Installation
Create a virtual environment
virtualenv .
source bin/activate
Clone camper into a directory inside, e.g. camper/
git clone https://github.com/comlounge/camper.git camper
Develop camper
cd camper/
python setup.py develop
cd ..
Configuration
Copy example config files into the venv root
cp -r camper/etc .
Don't forget to adjust settings, like mongodb host/port or location of image files.
Also go to mapbox.com and create an API key and a map key.
For development make sure you have dev.localhost assigned to 127.0.0.1 in /etc/hosts so that cookies can be saved (localhost does not work on many browsers).
The file config.ini contains all the configuration variables, the file dev.ini is prepared for development. The file scripts.ini is the same as dev.ini but has debug switched off. This one is used for running scripts like the one below for creating a user.
Note: you have to configure the mongodb endpoint twice, for the main app and for the userbase module as they do not share a database connection.
Hooking up nginx
In order to make run behind nginx in addition with an etherpad server you can use this configuration as a start:
server {
listen 80;
server_name mydomain;
access_log /var/log/nginx/mydomain.access.log rt_cache;
error_log /var/log/nginx/mydomain.error.log;
add_header X-Proxy-Cache $upstream_cache_status;
# we only use the pads here and route it to the etherpad lite instance
# which runs on port 9999 in our case
location /_pads/ {
proxy_pass http://127.0.0.1:9999/;
proxy_set_header Host $host;
proxy_pass_header Server;
# be carefull, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule
proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_set_header Host $host; # pass the host header
proxy_http_version 1.1; # recommended with keepalive connections
# WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
# the camper instance runs on 9998
location / {
proxy_pass http://127.0.0.1:9998/;
proxy_set_header Host $host;
proxy_pass_header Server;
# be carefull, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule
proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_set_header Host $host; # pass the host header
proxy_set_header X-Url-Scheme https;
proxy_http_version 1.1; # recommended with keepalive connections
# WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
Create a user and give it the admin role::
bin/um -f etc/scripts.ini add <username> <email> <password>
bin/um -f etc/scripts.ini permissions <username> admin,userbase:admin
Start the development server
bin/paster serve etc/camper.ini
If you do development you might want to add a --reload at the end.
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
