- PHP 48.3%
- HTML 45.2%
- CSS 2.1%
- JavaScript 2.1%
- Shell 1.8%
- Other 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| admin | ||
| api | ||
| assets | ||
| backups | ||
| cache | ||
| docker | ||
| docs | ||
| icons | ||
| includes | ||
| languages | ||
| logs | ||
| releases | ||
| sql | ||
| tests/import-massif | ||
| tools | ||
| tools-restricted | ||
| uploads | ||
| vendor | ||
| .dockerignore | ||
| .gitignore | ||
| .htaccess | ||
| .user.ini | ||
| a-propos.php | ||
| add_image_column.php | ||
| auteur.php | ||
| auteurs.php | ||
| auto_prepend.php | ||
| catalogue.php | ||
| categorie.php | ||
| CHANGELOG.md | ||
| chat.php | ||
| check_logs.sh | ||
| check_table.php | ||
| composer.json | ||
| composer.lock | ||
| connexion.php | ||
| contact.php | ||
| CONTRIBUTING.md | ||
| create_codeberg_release.sh | ||
| create_directories.php | ||
| cron_backup.php | ||
| download-pdf.php | ||
| epub-viewer.html | ||
| exemple-formulaire-personnalise.php | ||
| export-aln.php | ||
| favicon.svg | ||
| health.php | ||
| index.php | ||
| inscription.php | ||
| install.php | ||
| install.sh | ||
| install_email_personalization.php | ||
| install_newsletter.php | ||
| invitation-admin.php | ||
| LICENSE | ||
| lire.php | ||
| livre.php | ||
| logout.php | ||
| manifest.json | ||
| mentions-legales.php | ||
| mes-favoris.php | ||
| MISE_A_JOUR.md | ||
| mon-compte.php | ||
| mot-de-passe-oublie.php | ||
| newsletter-inscription.php | ||
| oai.php | ||
| offline.html | ||
| opds.php | ||
| page.php | ||
| README.md | ||
| README_FR.md | ||
| recherche.php | ||
| reinitialisation-mot-de-passe.php | ||
| robots.txt | ||
| rss.php | ||
| sitemap.php | ||
| soumettre.php | ||
| sw.js | ||
| test-mobile-reading.html | ||
| update.sh | ||
| version.php | ||
AnarcosyndicalismeBOOK
Open-access anarcho-syndicalist digital library CMS
Compatible with the Anarchist Library archive network (AmuseWiki / ALN)
"The emancipation of the working classes must be conquered by the working classes themselves." — IWA, 1864
What is it?
AnarcosyndicalismeBOOK is a specialized CMS (Content Management System) tailored for digital libraries. It allows you to create and manage an online library of activist texts, PDF documents, and EPUB ebooks.
Designed for:
- Collectives, activist groups, unions, and grassroots organizations looking to distribute texts
- Militant, alternative, or independent digital archives
- Community document sharing and preserving cultural heritage
- Self-hosting on personal servers, single-board computers, or shared hosting
Differences compared to generic CMS platforms:
- Dedicated specifically to circulating texts and literature (not a blog or general e-commerce)
- Native PDF and EPUB reader built directly into the browser
- Clean, focused interface without plugin overhead or complex dependencies
- Lightweight, dependable, and easy to maintain over decades
- Engineered from the ground up for self-hosting (YunoHost, Raspberry Pi, VPS...)
Note
Release Lifecycle & Long-Term Support (LTS)
The current v1.3.1 release is designated as a Long-Term Support (LTS) / Long Version: its functional scope is frozen and stabilized.
- Feature Freeze: No new breaking features will alter existing workflows or destabilize this branch.
- Continuous Maintenance: This version will continue to receive dedicated bugfixes, compatibility refinements, and critical security patches.
- Upcoming Intermediate Releases: New ongoing features under active development will be published through intermediate releases (Beta / staging channels) prior to being consolidated into the next major version.
See the complete English changelog, the v1.3.1 LTS release notes, and the v1.3.1 beta 4 pre-release notes.
Contributing
Contributions, bug reports, translations, accessibility improvements, and documentation updates are welcome. See CONTRIBUTING.md for the development setup, checks, and pull request guidelines.
Features
| Feature | Description |
|---|---|
| Online Reading | Native integrated PDF and EPUB viewing with full-screen Zen mode |
| Mobile Reading | Touch-optimized interface featuring smooth swipe gestures and page controls |
| PDF Printing | Direct PDF printing without leaving the reading page |
| Downloads | Export to PDF, EPUB, and Muse format (.muse) for offline reading and ALN exchange |
| File Uploads | Upload and manage TXT, PDF, and EPUB formats from administration |
| Public Submissions | Public form /proposer.php for readers to submit texts with author, metadata, and files |
| Admin Moderation | Approval queue with review, editing, publication, or rejection workflows |
| Bulk Import | Drag-and-drop batch upload for multiple PDF/EPUB files with automatic author creation |
| Calibre Import | Import from metadata.db or remote Calibre Content Server (OPDS) with material types |
| Multi-Source Imports | Import from Wikisource (all languages), The Anarchist Library, Anarchief, Project Gutenberg, Archive.org, Librivox, Standard Ebooks, and any WordPress site (via REST API) with HTML cleaning, anti-SSRF protections, and automatic metadata extraction |
| Advanced Search | Full-text search across titles, authors, descriptions, categories, and material types |
| Categories | Thematic categorization and organizational series |
| Material Types | Precise document classification (books, booklets, flyers, posters, periodic journals, fanzines, essays) |
| Reading List | Personal bookmarking and favorites list |
| Password Recovery | Secure password resets via signed email tokens with anti-bot protection |
| Profiles | User avatars and author portraits, Two-Factor Authentication (2FA/TOTP), Passkeys (WebAuthn) |
| Static Pages | WYSIWYG editor for custom pages (About, Editorial Manifesto, Legal notice) |
| Customization | Customizable title, quotes, license, logo, favicon, colors, patterns, background images, border radius, and typography |
| Live Theme Preview | Real-time preview of customized color palettes, card styling, typography, and backgrounds |
| Email Templates | Translatable and customizable email templates (welcome, contact, password reset, proposal status) |
| Newsletter | Built-in subscriber list manager and broadcast sender with ethical throttling |
| Social Auto-Publish | Automated syndication to Mastodon, Bluesky, Facebook, X, Tumblr, and Threads |
| Menu Manager | Complete control over navigation menus (links, ordering, icons, visibility) |
| Community Chat | Real-time instant messaging with public channels, private invited groups, encrypted DMs, and admin moderation channel |
| RSS Feeds | Open web syndication feeds (global, per-category, and per-author) with styled HTML previews |
| OPDS Server | Open Publication Distribution System catalog for e-readers (Calibre, Moon+ Reader, KOReader...) |
| OAI-PMH Provider | Read-only OAI-PMH 2.0 catalogue provider exposing validated public metadata in Dublin Core (oai_dc) format |
| REST API | Comprehensive REST API for third-party integrations and ALN Muse exports, with mandatory TOTP verification when 2FA is active |
| Sitemap | Dynamic XML sitemap and visitor-friendly styled HTML directory |
| Native i18n (42 Languages) | Comprehensive native internationalization engine across 42 languages (local JSON dictionaries, autonyms, zero state flags, full UI and admin coverage) |
| Translation Engine | High-performance on-the-fly content translation powered by LibreTranslate with sub-5ms cached queries |
| All-in-One Backups | Complete unified archive generation (MariaDB SQL dump + uploads/ directory) with automatic rotation |
| Cron Automation | Secure endpoint (cron_backup.php) protected by 256-bit cryptographic token, flock locking, and non-blocking asynchronous responses |
| Offline PWA Mode | Local text caching in IndexedDB with interactive status indicators for offline reading |
| 100% Local Dependencies | Fully self-hosted vendor libraries (assets/vendor/: Bootstrap, FontAwesome, PDF.js, ePub.js, Swiper, Quill, OpenDyslexic) with zero third-party CDN leaks |
| System Health Monitor | Real-time diagnostic monitor on the administrative dashboard |
| Clean URLs & Slugs | Complete support for clean URLs without .php and flexible slug resolution with spaces and special characters |
| Accessible Modals | Native Bootstrap 5 modals styled to match the theme replacing legacy browser alert/confirm dialogues |
| Progressive Web App | Installable on mobile and desktop devices with an optimized Service Worker and custom offline page |
| Automatic HTTPS | Automatic TLS certificate support via Let's Encrypt |
| SEO Optimization | Open Graph, Twitter Cards, JSON-LD structured data, canonical URLs, and robots.txt |
| Social Sharing | Modern bottom sheet drawer with Mastodon, Bluesky, Telegram, WhatsApp, X, Facebook, and email |
| Recommendations | "If you liked this text..." recommendation engine based on shared categories |
| Full Accessibility | Accessibility widget with local OpenDyslexic font, contrast adjustments, and text-to-speech |
| One-Click Updates | Check and install upstream updates from Codeberg (stable and beta branches) |
| One-Click Restore | In-dashboard database and file restoration tools with confirmation safeguards |
| Error Logs | Integrated system health inspection and error log rotation |
| Built-in Help Manual | Comprehensive documentation manual across 42 languages accessible directly in administration |
| Docker Multi-Arch | Development and production Compose environments with multi-architecture Docker Hub images (latest, 1.3.1, v1.3.1) |
Installation
Prerequisites
PHP 8.0+ • MySQL/MariaDB • Composer • Apache/Nginx/Caddy
Required PHP Extensions:
pdo_mysqlcurlmbstringfileinfogdzip
Optional (for Calibre and advanced feeds):
sqlite3(CLI)simplexml
Self-Hosting Platforms
AnarcosyndicalismeBOOK runs seamlessly on multiple self-hosting platforms:
| Solution | Deployment Guide |
|---|---|
| YunoHost | Official YunoHost Package — 1-click install |
| Docker | Official Docker Image — Multi-architecture deployment |
| Cloudron | Deployed via LAMP stack or custom app container |
| CapRover | Standard PHP/MySQL containerized deployment |
| Raspberry Pi | Standard LAMP/LEMP installation on Debian / Raspberry Pi OS |
| Dedicated VPS | Manual installation on Debian, Ubuntu, Rocky Linux, or Alpine |
Docker (Recommended)
To deploy quickly on a VPS or via Portainer, use the official Docker image. Database setup and administrator initialization can be automated.
Multi-Architecture Support:
Full native support for ARM (ARM64 /linux/arm64, ARMv7 /linux/arm/v7) and x86_64 (linux/amd64). You can run AnarcosyndicalismeBOOK natively on Raspberry Pi 4/5, ARM servers (Ampere, Oracle Cloud ARM, AWS Graviton), Apple Silicon, and standard x86 servers.
# Pull the official Docker Hub image (stable release)
docker pull liberchat/anarcosyndicalismebook:latest
# Or pull the beta channel for testing upcoming improvements
docker pull liberchat/anarcosyndicalismebook:beta
Published tags:
# Stable production releases (AMD64 + ARM64 + ARMv7)
liberchat/anarcosyndicalismebook:latest
liberchat/anarcosyndicalismebook:1.3.1
liberchat/anarcosyndicalismebook:v1.3.1
# Beta & pre-release testing channel (AMD64 + ARM64 + ARMv7)
liberchat/anarcosyndicalismebook:beta
liberchat/anarcosyndicalismebook:beta-4
liberchat/anarcosyndicalismebook:1.3.1-beta
liberchat/anarcosyndicalismebook:1.3.1-beta.4
# Previous releases
liberchat/anarcosyndicalismebook:1.2.103
liberchat/anarcosyndicalismebook:v1.2.103
Release Channels (Stable vs. Beta)
- Stable Channel (
latest,1.3.1): Recommended for production environments. Thoroughly tested releases with verified migrations and full stability. - Beta Channel (
beta,1.3.1-beta): Allows administrators and contributors to test new features, bugfixes, and security enhancements prior to general release. Container images on the beta channel are built with the same multi-architecture toolchain and are ideal for staging instances.
The current beta includes a read-only OAI-PMH 2.0 provider at /oai.php, exposing
validated public catalogue metadata in the oai_dc format. Resumption tokens are
signed and the endpoint applies basic rate limiting. See
docs/oai-pmh.md for the supported verbs and examples.
Local Development Mode
The repository includes an out-of-the-box development stack orchestrated with Docker Compose:
# Start local development environment: app + MariaDB + Mailpit + CAP
docker compose -f docker/docker-compose.dev.yml up -d --build
How local development works:
- Live Code Sync (Bind Mount): Your local project directory is mounted directly to
/var/www/htmlinside the container. Any edit to PHP files, JavaScript, or CSS reflects immediately without rebuilding the image. - Zero-Manual-Setup Initialization: The container entrypoint executes
docker/create-admin.phpat startup. It automatically generatesincludes/database.phpandincludes/config.phpif missing on the host, creates the database schema, executes pending migrations, and configures the default admin account. - Automated Installer Bypass: In Docker environments, manual setup via
install.phpis disabled (returns HTTP 403) because the container stack provisions itself programmatically. - Built-in Mail Sandbox (Mailpit): All emails sent by the application (registration, contact forms, password recovery, admin alerts) are trapped by Mailpit. No external SMTP credentials are required, and you can inspect delivered emails via the web UI.
- Bot Protection Sandbox (CAP): A local instance of the CAP anti-bot service runs alongside the application for full feature testing.
Development services and default credentials:
- Web application:
http://localhost:8888 - Mailpit web UI:
http://localhost:8026 - Local development uses the credentials defined in
docker/.env; production requires an explicitADMIN_PASSof at least 12 characters. - MySQL credentials are read from
docker/.env; do not use repository defaults in a deployed instance.
# Stop development environment
docker compose -f docker/docker-compose.dev.yml down
Production Deployment
# 1. Prepare configuration
cp docker/.env.prod.example docker/.env.prod
# Edit docker/.env.prod with secure passwords, your domain, and production SMTP settings
# 2. Launch production stack
docker compose --env-file docker/.env.prod -f docker/docker-compose.prod.yml up -d --build
To update an existing Compose deployment, keep .env.prod and all named
volumes, then rebuild only the application service:
docker compose --env-file docker/.env.prod -f docker/docker-compose.prod.yml up -d --build app
Do not use docker compose down -v in production because it removes persistent
data. ADMIN_PASS is used when creating the first administrator. If an admin
already exists, the startup script detects it and preserves its password when
the application container is recreated.
If your SMTP server utilizes a self-signed TLS certificate (such as an internal mail server or YunoHost instance), enable this setting in docker/.env.prod:
SMTP_ALLOW_SELF_SIGNED=true
Calibre TLS verification remains enabled by default. Only for a trusted local Calibre server using a self-signed certificate, explicitly add:
CALIBRE_ALLOW_SELF_SIGNED=true
For additional details, see docker/README.md and the Docker Hub repository.
Standard Web Server Installation (LAMP / LEMP)
For shared hosting, dedicated servers, or Linux VPS with Apache/Nginx, PHP 8.0+, and MySQL/MariaDB:
# 1. Prepare an empty MySQL/MariaDB database beforehand
mysql -u root -p -e "
CREATE DATABASE bibliotheque CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'biblio_user'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON bibliotheque.* TO 'biblio_user'@'localhost';
FLUSH PRIVILEGES;"
# Note: You only need to create the empty database and user.
# You do NOT need to manually import any SQL tables or schema files;
# install.php provisions all tables, indexes, and default settings automatically.
# 2. Clone the repository or extract the official release archive
git clone https://codeberg.org/Anarcosyndicalismebook/anarcosyndicalismebook.git /var/www/bibliotheque
cd /var/www/bibliotheque
# 3. Install dependencies
composer install --no-dev --optimize-autoloader
# 4. Set proper file ownership and permissions
sudo chown -R www-data:www-data /var/www/bibliotheque
sudo chmod -R 775 uploads backups logs
# 5. Launch the web installer
# Navigate to https://your-domain.org/install.php
The step-by-step installation wizard guides you through:
- Welcome — Overview of capabilities
- System Checks — Verification of PHP extensions and write permissions
- Database — MariaDB/MySQL connection parameters and connection test
- Configuration — Base URL, SMTP mailer, and anti-bot protection
- Administrator Account — Creating the primary administrator account
- Installation — Automatic schema migration and configuration generation
- Finished & Secured —
install.phpis automatically locked and deleted for security
Directory Structure
anarcosyndicalismebook/
├── admin/ # Administrative dashboard and controllers
│ ├── dashboard.php # Overview and statistics
│ ├── parametres.php # Instance preferences
│ ├── menus.php # Menu hierarchy editor
│ ├── pages.php # Static page WYSIWYG editor
│ ├── liste-textes.php # Document management
│ ├── liste-auteurs.php # Author catalog
│ ├── liste-categories.php # Category structure
│ ├── liste-utilisateurs.php # Account management
│ ├── ajouter-texte.php # Add and publish documents
│ ├── ajouter-auteur.php # Add author biographies
│ ├── import-masse.php # Drag-and-drop batch upload
│ ├── import-calibre.php # Calibre metadata.db or OPDS import
│ ├── newsletter.php # Newsletter manager and queue
│ ├── import-wikisource.php # Multi-source imports (Wikisource, ALN, Gutenberg...)
│ └── ...
├── api/ # REST API endpoints
│ ├── passkey.php # WebAuthn passkeys backend
│ └── chat.php # Real-time discussion backend
├── assets/ # Frontend assets
│ ├── styles.css # Primary red & black theme
│ ├── css/ # Extended stylesheets
│ ├── js/ # Client-side scripts
│ └── vendor/ # Self-hosted vendor packages
├── includes/ # Backend logic and helpers
│ ├── security.php # CSRF, CSP, rate limiting
│ ├── authentification.php # Session handling
│ ├── totp.php # RFC 6238 TOTP two-factor engine
│ ├── webauthn.php # WebAuthn and passkey verification
│ ├── database.php # PDO database layer
│ ├── config.php # Global settings
│ ├── header.php # Template header
│ ├── footer.php # Template footer
│ ├── mail.php # Email delivery helper
│ ├── captcha.php # CAP captcha handler
│ └── ImportExterne.php # SSRF-protected content fetcher
├── languages/ # Internationalization engine
│ ├── help/ # HTML manuals in 42 languages
│ └── *.json # Native translation dictionaries
├── sql/ # Schema definition and migrations
├── icons/ # PWA iconography (72px to 512px)
├── uploads/ # Media storage
│ ├── site/ # Customized logos and favicons
│ ├── auteurs/ # Author portraits
│ ├── textes/ # Document cover images
│ └── avatars/ # User profile avatars
├── backups/ # Database dumps and archives
├── index.php # Homepage
├── catalogue.php # Catalog browser
├── auteurs.php # Author directory
├── categorie.php # Category view
├── lire.php # Universal PDF/EPUB reader
├── recherche.php # Search engine
├── connexion.php # Login page (+ Passkeys)
├── mot-de-passe-oublie.php # Password reset request
├── reinitialisation-mot-de-passe.php # Token reset handler
├── inscription.php # Registration page
├── mon-compte.php # User account profile (2FA & Passkeys)
├── mes-favoris.php # Reading list
├── contact.php # Contact form
├── newsletter-inscription.php # Newsletter subscription
├── rss.php # RSS syndication feed
├── opds.php # OPDS e-reader catalog
├── sitemap.php # Dynamic XML and HTML sitemap
├── robots.txt # Search engine directives
├── version.php # Application release version
├── manifest.json # PWA manifest
├── sw.js # PWA Service Worker
└── offline.html # Offline fallback view
Security
The platform integrates defensive mechanisms against modern cyber threats:
| Protection | Implementation |
|---|---|
| SQL Injection | Parameterized queries enforced across all database queries using PDO |
| Cross-Site Scripting (XSS) | Strict context-aware HTML escaping and Content Security Policy headers |
| CSRF | Cryptographically unique validation tokens for all state-changing POST forms |
| Two-Factor Authentication (2FA) | Time-based One-Time Passwords (RFC 6238 TOTP) with recovery codes |
| Passkeys | Passwordless biometric and hardware authentication via FIDO2 / WebAuthn |
| Brute Force Defense | IP-based rate limiting, fingerprinting, and privacy-friendly CAP captcha |
| Session Security | HttpOnly, Secure, and SameSite=Strict flags with session ID regeneration |
| Password Storage | Secure hashing via bcrypt (password_hash) |
| File Uploads | Magic byte inspection, MIME validation, file size limits, and SVG sanitization |
| Background Images | Restricted to image formats (JPG/PNG/WebP/GIF), 5MB size limit, random filename |
| SSRF Mitigation | Strict domain allowlists, private IP/localhost blocking, mandatory HTTPS, 5MB response cap |
| Theme Customization | Hex color codes (#RRGGBB), strict design tokens, and restricted CSS rules |
| HTTP Headers | CSP, X-Frame-Options (DENY), X-Content-Type-Options (nosniff), Referrer-Policy |
| Server Protection | Directory-level access restrictions in .htaccess protecting sensitive paths |
SEO & Discoverability
Built-in discoverability features ensure your digital library is indexed ethically:
| Standard | Description |
|---|---|
| Open Graph | og:title, og:description, og:image, og:url, og:type metadata |
| Twitter Cards | twitter:card, twitter:title, twitter:description, twitter:image tags |
| JSON-LD | Structured schema markup (WebSite, Article, Person) |
| Canonical URLs | Canonical link relations specified across all content pages |
| Meta Elements | Accurate description, keywords, author, and robots instructions |
| Search Console | Domain verification support for Google Search Console and Bing Webmaster Tools |
Dynamic Sitemap: Accessible at /sitemap.php, indexing texts, authors, and categories. Provides styled HTML for users and structured XML for search engine crawlers.
Social Sharing Drawer: Interactive sharing drawer with dedicated links for Mastodon, Bluesky, Telegram, WhatsApp, X, Facebook, email, and one-click URL copying.
Contextual Recommendations: Automatic "If you appreciated this text, you may also like..." recommendations based on shared topics and catalog taxonomy.
Accessibility (a11y)
A comprehensive floating accessibility panel is available on all pages:
| Feature | Description |
|---|---|
| Font Scaling | Dynamically increase or decrease font size (80% to 150%) |
| High Contrast | Black background, crisp white typography, and vibrant link highlights |
| Dyslexia Font | Locally hosted OpenDyslexic typeface for easier reading |
| Line Spacing | Generous line height adjustments to prevent visual crowding |
| Link Underlines | Persistent underline indicators across all interactive hyperlinks |
| Large Cursor | High-visibility enlarged mouse pointer |
| Motion Reduction | Disable animations and smooth transitions for sensitive readers |
| Screen Reader Mode | Semantic structure optimized for NVDA, JAWS, Orca, and VoiceOver |
Additional accessibility enhancements:
- Direct "Skip to main content" keyboard shortcut link
- Persistent accessibility preferences stored in local storage
- Comprehensive ARIA labeling on all interactive elements
- Enhanced visible keyboard focus rings
Administration
Access: /admin/ (restricted to authenticated administrators)
- Dashboard — Visitor counts, reading metrics, recent activity, and system shortcuts
- Documents — Create, update, or remove texts; upload PDF, EPUB, and TXT files
- Public Proposals — Review, proofread, approve, or reject user-submitted texts with email notifications
- Bulk Import — Multi-file drag-and-drop batch upload with author extraction
- Calibre Import — Direct ingestion from
metadata.dbor remote Calibre Content Server - External Imports — Fetch content from Wikisource, The Anarchist Library, Anarchief, and WordPress sites
- Authors — Biographies, photos, and author catalog management
- Categories & Materials — Taxonomic categorization and document classification
- User Accounts — Access role assignments (Administrator, Editor, Reader)
- Admin Invitations — Secure email invitations featuring single-use cryptographic tokens
- Custom Pages — Rich-text WYSIWYG editor for static organizational pages
- Menus — Navigation link order, nesting, icons, and visibility
- Settings — Identity, logo, favicon, SEO parameters, and CAP anti-bot integration
- Email Customization — Tailored email styling, color accents, and translated preview modals
- Newsletter — Subscriber management, automated unsubscribe workflows, and broadcast delivery
- Social Auto-Publish — Automated syndication to Mastodon, Bluesky, Facebook, X, Tumblr, and Threads
- System Health — Real-time checks on PHP extensions, database status, and file storage permissions
- Integrated Manual — Comprehensive help documentation across 42 languages
- Updates — In-dashboard upstream update inspection and installation from Codeberg
Upstream Updates
The built-in update engine checks for new releases on Codeberg directly from the administrative interface:
Release Policy & Long-Term Support
- Long-Term Support (LTS) — Currently v1.3.1: The feature set is strictly frozen to deliver maximum stability, dependability, and compatibility for production libraries. Maintenance on this branch focuses exclusively on bug fixes, performance optimizations, and security patches.
- Intermediate Releases: Future feature additions and developmental improvements will be published as intermediate releases (available via the Beta / Pre-release channel in the admin dashboard) to ensure thorough real-world validation before inclusion in a future major release.
Access: Admin → Settings → Updates
Update Procedure:
- Check for new releases via the Forgejo / Codeberg API
- Display detailed release notes
- Perform one-click automated update:
- Database backup archive creation in
backups/ - Preservation of instance configuration (
config.php) - Code synchronization via Git (
git fetch&git reset --hard origin/main) - Configuration restoration
- Dependency verification via
composer install
- Database backup archive creation in
Creating a New Release (Developers):
- Bump the release number in
version.php - Document updates in
CHANGELOG.md - Draft release notes under
releases/RELEASE_NOTES_vX.Y.Z.md - Tag the commit:
git tag -a vX.Y.Z -m "Release vX.Y.Z" - Push commit and tags:
git push origin main && git push origin vX.Y.Z - Build and publish multi-arch Docker image:
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -f docker/Dockerfile \ -t liberchat/anarcosyndicalismebook:X.Y.Z \ -t liberchat/anarcosyndicalismebook:vX.Y.Z \ -t liberchat/anarcosyndicalismebook:latest --push . - Publish the release on Codeberg
Passkeys (WebAuthn / FIDO2)
Passwordless authentication using biometric authentication or hardware security keys:
Supported Authenticators:
- Fingerprint scanners (Touch ID, Windows Hello, Android Biometrics)
- Facial recognition (Face ID)
- Hardware USB/NFC security keys (YubiKey, Nitrokey)
- Cross-device authentication (Smartphones via QR code)
Key Capabilities:
- Register multiple hardware authenticators per account
- Manage passkeys directly inside User Account settings
- Instant passwordless login from the sign-in screen
- Rigorous cryptographic verification (Challenge, Origin, RP ID hash, user presence, signature verification, and anti-replay counters)
- Fully compatible alongside TOTP two-factor authentication
- Requires HTTPS in production
Activist Newsletter
Integrated newsletter broadcast platform:
Capabilities:
- Public subscription form in the footer and on a dedicated page
- Compose newsletters featuring newly published texts
- Complete template styling (accent colors, logo, introductory and closing text)
- Real-time preview before sending
- Full broadcast log and delivery audit trail
- Subscriber status management with automated one-click unsubscribe links
- Reliable delivery via PHPMailer (SMTP)
Social Media & Fediverse Auto-Publishing
Automated syndication across decentralized and centralized platforms:
Supported Networks:
- Mastodon (Fediverse)
- Bluesky (AT Protocol)
- Facebook (Pages)
- X (Twitter)
- Tumblr
- Threads
Key Capabilities:
- Automatic dispatch upon publishing new texts
- Integration with Calibre imports
- Customizable message templates with dynamic tags (
{titre},{auteur},{resume},{url}) - Configurable hashtags
- Broadcast history and real-time connectivity testing tools
OPDS Catalog
Standard OPDS feed for e-readers and mobile applications (Calibre, Moon+ Reader, KOReader, FBReader):
Feed URL: /opds.php
Available Feeds:
/opds.php— Root catalog?feed=recent— Recent acquisitions?feed=popular— Most read texts?feed=authors— Browse by author?feed=categories— Browse by category?search=query— Catalog search
REST API
Comprehensive REST API for mobile applications and network syndication:
Base URL: /api/
Public Endpoints:
?endpoint=books— Book list with search and pagination?endpoint=authors— Author directory and biographical information?endpoint=categories— Category hierarchy?endpoint=search&q=term— Full-text search?endpoint=recent— Recent releases?endpoint=popular— Popular texts?endpoint=stats— General library statistics?endpoint=export-aln— JSON index of available Muse archives?endpoint=export-aln&slug=slug-name— Direct download of raw Muse (.muse) document
Authentication:
POST ?endpoint=auth— Authenticate and receive a Bearer token- Header:
Authorization: Bearer {token} - Accounts with 2FA enabled require a valid TOTP code during authentication.
Unified Backups & Scheduled Tasks (Cron)
AnarcosyndicalismeBOOK includes a built-in BackupManager capable of archiving the database and all media files (uploads/) into a single timestamped ZIP archive.
Capabilities:
- One-click backup from administration with status indicators
- Full restoration: Restore database alone or entire backup archive
- Secure Cron Endpoint (
/cron_backup.php): Triggered via 256-bit token withflocklocking and asynchronous non-blocking response - Automatic rotation: Retains the 10 most recent backups to conserve disk space
- Directory Protection: Strict access restrictions blocking public downloads of
.zipfiles
Recommended Cron Command (daily at 3:00 AM):
0 3 * * * curl -s "https://your-site.org/cron_backup.php?token=YOUR_SECRET_TOKEN" > /dev/null
Offline PWA Reading
Offline capabilities powered by Progressive Web App standards:
- IndexedDB Storage: Save individual texts locally for offline reading
- Interactive Offline Indicators: Real-time status indicators on saved texts
- Service Worker Caching: Transparent caching of essential reading stylesheets, fonts, and e-reader engines
Native Internationalization (42 Languages)
In-memory i18n engine (includes/i18n.php):
- 42 Languages: Esperanto, French, Spanish, English, Catalan, Basque, Galician, Italian, German, Portuguese (Portugal and Brazil), Irish, Dutch, Russian, Ukrainian, Polish, Czech, Slovak, Slovenian, Croatian, Serbian, Bulgarian, Greek, Turkish, Arabic, Persian, Hebrew, Hindi, Bengali, Indonesian, Malay, Vietnamese, Thai, Simplified Chinese, Japanese, Korean, Swedish, Danish, Finnish, Norwegian, Hungarian, Romanian.
- Native Autonyms: Cultural respect without nationalistic state flags.
- Zero Network Overhead: Direct in-memory lookup from structured JSON dictionaries (
languages/*.json). - Protected Dictionaries: Public HTTP access to raw JSON files blocked by web server configuration.
Local Independence & Vendor Assets
All third-party libraries are completely self-hosted in assets/vendor/:
- Included Packages: Bootstrap 5.3, FontAwesome 6.4, PDF.js, ePub.js, Swiper, JSZip, Quill, OpenDyslexic.
- Zero Third-Party CDN Calls: No telemetry or asset requests to Google Fonts, cdnjs, or external providers.
Development
# Quick built-in PHP development server
php -S localhost:8080
# Database import
mysql -u root -p anarcosyndicalismebook < database_numerique.sql
Docker development environment:
docker compose -f docker/docker-compose.dev.yml up -d --build
docker compose -f docker/docker-compose.dev.yml logs -f
docker compose -f docker/docker-compose.dev.yml down
This configuration starts MariaDB, the CMS on http://localhost:8888, and Mailpit on http://localhost:8026.
Links
- Codeberg Repository: https://codeberg.org/Anarcosyndicalismebook/anarcosyndicalismebook
- Live Demonstration: https://anarcosyndicalismebookcms.unionlibertaireanarchiste.org/
- Official Releases: https://codeberg.org/Anarcosyndicalismebook/anarcosyndicalismebook/releases
- Docker Hub Repository: https://hub.docker.com/r/liberchat/anarcosyndicalismebook
- YunoHost Package: https://codeberg.org/Anarcosyndicalismebook/anarcosyndicalismebook_ynh
License
| Component | License Terms |
|---|---|
| Source Code | MIT License |
| Activist Content | Free circulation of knowledge |
Knowledge belongs to humanity.