This repository contains the steps and commands needed to configure, deploy, and test the Camicia BOINC project using Docker.
Start the environment using Docker Compose. Make sure to clean up before rebuilding the containers:
docker compose down
docker compose up -d --buildCreate the basic BOINC project structure by running the make_project tool inside the server container.
docker exec -it -u <PROJECTS_USER> -e USER=<PROJECTS_USER> <SERVER_CONTAINER_NAME> /
/usr/local/src/boinc/tools/make_project /
--srcdir /usr/local/src/boinc /
--project_root <SERVER_VOLUME_PROJECTS_DIR>/camicia /
--url_base http://<DOMAIN> /
--delete_prev_inst /
--drop_db_first /
--db_host <DATABASE_CONTAINER_NAME> /
--db_user root /
--db_pass <MARIADB_ROOT_PASSWORD> /
--db_name <MARIADB_DATABASE> /
camiciaAfter generating the project, perform the following steps:
- Run
tools.sh - Restart the containers (temporary for now)
Below are the main configuration files and helpful links to the official BOINC documentation:
- config.xml: Main project configuration file.
- Translations: Guide for translating the web interface.
- project.xml: Declare apps and platforms in this file.
- project.inc: Include file for project-specific web customizations. (
/html/project)
Use the xadd tool to add your app/platform definitions to the database:
docker exec -it --user <PROJECTS_USER> <SERVER_CONTAINER_NAME> /
bash -c "cd <SERVER_VOLUME_PROJECTS_DIR>/camicia && ./bin/xadd"Create the directory structure for your application (this is where you will move your worker_app):
docker exec -it --user <PROJECTS_USER> <SERVER_CONTAINER_NAME> /
mkdir -p <SERVER_VOLUME_PROJECTS_DIR>/camicia/apps/<app>/<version>/<platform>Executables must be signed for security reasons. Refer to the Code Signing documentation for more details:
crypt_prog -sign <exe-path> <code_sign_private-path> > <exe-path.sig>Once the app files are in place and signed, update the database so BOINC detects the new app version:
docker exec -it --user <PROJECTS_USER> <SERVER_CONTAINER_NAME> /
bash -c "cd <SERVER_VOLUME_PROJECTS_DIR>/camicia && ./bin/update_versions"To generate a new workunit, place your input file (e.g., <input.txt>) inside the /download directory, then run:
docker exec -it --user <PROJECTS_USER> <SERVER_CONTAINER_NAME> /
bash -c "cd <SERVER_VOLUME_PROJECTS_DIR>/camicia && ./bin/create_work --appname <app> --wu_name <unique-test-name> --wu_template templates/<app>_in.xml --result_template templates/<app>_out.xml <input.txt>"You can test the entire workflow by spinning up a Linux BOINC client on Docker and attaching it to your project:
docker run -d --name linux_user --net host boinc/client
docker exec linux_user boinccmd --project_attach http://<DOMAIN>/camicia <user-token>
docker exec linux_user boinccmd --project http://<DOMAIN>/camicia update
docker logs -f linux_user