[{"data":1,"prerenderedAt":298},["ShallowReactive",2],{"seo-verification":3,"blog-self-host-kimai-vps-open-source-time-tracking-ma-en":6,"promo-bar-likely":297},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-self-host-kimai-vps-open-source-time-tracking-ma-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":234,"ctaBody":235,"ctaButton":236,"ctaUrl":237,"relatedPosts":238},341,"self-host-kimai-vps-open-source-time-tracking",{"fr":12,"en":10,"ar":13,"es":14},"heberger-kimai-vps","استضافة-kimai-على-vps-تتبع-الوقت-مفتوح-المصدر","alojar-kimai-en-vps-seguimiento-tiempo-open-source","Self-Host Kimai on a VPS: Open-Source Time Tracking","Run Kimai with Docker on your VPS: compose file, HTTPS, roles, budgets, invoicing, API, backups and troubleshooting for the open-source time tracker.",14,0,false,"2026-01-09T00:00:00+00:00","2026-11-04T16:30:27+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-kimai-vps-poster.svg",{"categorySlug":34,"appSlug":35},"erp-business-management","kimai","Kimai is an MIT-licensed open-source time tracker that can replace Toggl Track, Clockify or Harvest for the long haul: timers, timesheets, customers, projects, activities, hourly rates, budgets, reports and invoicing. This guide goes well beyond installation. It covers the architecture of the Docker stack, an annotated `docker-compose.yml` for manual deployments, HTTPS behind a reverse proxy, creating accounts from the command line, the data model and roles, invoicing, the REST API, plugins, backups, upgrades and the errors you are most likely to meet. By the end you will be able to run Kimai in production for a whole team, not just get it to start.",[38,42,50,53,62,65,83,86,89,97,115,118,121,130,133,139,142,157,161,164,167,170,178,181,189,229,232],{"type":39,"title":40,"body":41},"h2","Why Self-Host Kimai?","A time tracker holds sensitive data: who works for which customer, for how many hours, at what rate. On a SaaS platform that information lives with the vendor, and the bill grows with every seat you add. Hosting Kimai on your own VPS keeps the database within reach, lets you add users without licence fees, and puts you in charge of when upgrades happen.",{"type":43,"items":44},"ul",[45,46,47,48,49],"**MIT licence** — no licence fees and no user cap imposed by the vendor.","**Built-in invoicing** — invoices are generated straight from timesheets, no external module needed.","**Documented REST API** — connect your internal tools (ticketing, HR, dashboards) to your own data.","**Data sovereignty** — hours, rates and customer records stay in your MySQL database.","**Lightweight stack** — one application container plus a MySQL database, comfortable on an entry-level VPS.",{"type":39,"title":51,"body":52},"Architecture: What Runs on the VPS","Kimai is a **PHP** application built on the **Symfony** framework. Version 2 relies on **MySQL or MariaDB**; SQLite is no longer supported. The official `kimai\u002Fkimai2` image comes in two flavours: `apache` (bundled web server, listening on port **8001**) and `fpm` (meant to sit behind your own Nginx). The ServOrbit template uses `kimai\u002Fkimai2:apache-latest` with MySQL 8.0, so the whole stack is just two containers.",{"type":43,"title":54,"items":55},"The building blocks",[56,57,58,59,60,61],"**`kimai` container** — Apache and PHP, the Symfony application in `\u002Fopt\u002Fkimai`, port 8001 published on `127.0.0.1` only.","**`db` container** — MySQL 8.0 with a `mysqladmin ping` healthcheck, so Kimai only starts once the database is ready.","**`kimai_db` volume** — the MySQL data files, in other words every timesheet you record.","**`kimai_data` volume** — `\u002Fopt\u002Fkimai\u002Fvar\u002Fdata`, files uploaded through the application (invoice templates, documents).","**`kimai_public` volume** — `\u002Fopt\u002Fkimai\u002Fpublic\u002Favatars`, user avatars.","**Reverse proxy** — Nginx, Caddy or Traefik terminates HTTPS and forwards requests to local port 8001.",{"type":39,"title":63,"body":64},"Deploy Kimai on ServOrbit","The ServOrbit Marketplace provisions the full stack on Ubuntu 24.04: Docker, MySQL 8.0, the Kimai container, the three volumes and a generated administrator password. You do not need a domain name to get started.",{"type":66,"steps":67},"steps",[68,71,74,77,80],{"title":69,"body":70},"Start the deployment","In your client area: **Marketplace → ERP & Business Management → Kimai → Deploy**. ServOrbit creates the VPS, installs Docker and starts the stack (MySQL 8 + Apache\u002FPHP) automatically.",{"title":72,"body":73},"Collect your credentials","Wait about **60 seconds**. The app card shows your credentials: login `admin@kimai.local` and a generated password.",{"title":75,"body":76},"Connect without a domain","Open an SSH tunnel: `ssh -L 8080:127.0.0.1:8001 root@\u003Cip>`, then browse to `http:\u002F\u002Flocalhost:8080`. Add a domain from the dashboard whenever you are ready.",{"title":78,"body":79},"Create a customer and a project","Create your first **customer**, then a **project** linked to it, and at least one **activity**. Set an hourly rate or a budget.",{"title":81,"body":82},"Log your first hours","Click **▶** to start the timer and pick the project and activity: Kimai records your time as you work.",{"type":84,"body":85},"tip","On first login, open your profile to replace `admin@kimai.local` with a real address and change the generated password. Then keep that super-admin account for administration only and create named accounts for day-to-day work.",{"type":39,"title":87,"body":88},"Manual Installation with Docker Compose","If you would rather install Kimai yourself on an existing VPS, here is a `docker-compose.yml` equivalent to the template, with one extra volume for plugins. Put it in a dedicated directory such as `\u002Fopt\u002Fkimai`.\n\n```yaml\nservices:\n  db:\n    image: mysql:8.0\n    restart: unless-stopped\n    environment:\n      MYSQL_DATABASE: kimai\n      MYSQL_USER: kimai\n      MYSQL_PASSWORD: ${DB_PASSWORD}\n      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}\n    volumes:\n      - kimai_db:\u002Fvar\u002Flib\u002Fmysql\n    healthcheck:\n      test: [\"CMD\", \"mysqladmin\", \"ping\", \"-h\", \"127.0.0.1\", \"--silent\"]\n      interval: 10s\n      retries: 12\n\n  kimai:\n    image: kimai\u002Fkimai2:apache-latest\n    restart: unless-stopped\n    depends_on:\n      db:\n        condition: service_healthy\n    ports:\n      - \"127.0.0.1:8001:8001\"\n    environment:\n      DATABASE_URL: \"mysql:\u002F\u002Fkimai:${DB_PASSWORD}@db\u002Fkimai?charset=utf8mb4&serverVersion=8.0.34\"\n      APP_SECRET: ${APP_SECRET}\n      ADMINMAIL: admin@your-domain.com\n      ADMINPASS: ${ADMIN_PASSWORD}\n      TRUSTED_HOSTS: \"localhost,127.0.0.1,kimai.your-domain.com\"\n    volumes:\n      - kimai_data:\u002Fopt\u002Fkimai\u002Fvar\u002Fdata\n      - kimai_plugins:\u002Fopt\u002Fkimai\u002Fvar\u002Fplugins\n      - kimai_public:\u002Fopt\u002Fkimai\u002Fpublic\u002Favatars\n\nvolumes:\n  kimai_db:\n  kimai_data:\n  kimai_plugins:\n  kimai_public:\n```\n\nNext, generate the secrets into a `.env` file, which Compose reads automatically, and start the stack. On first boot the container creates the database schema and the administrator account defined by `ADMINMAIL` and `ADMINPASS`.\n\n```bash\ncat > .env \u003C\u003CEOF\nDB_PASSWORD=$(openssl rand -hex 16)\nDB_ROOT_PASSWORD=$(openssl rand -hex 16)\nAPP_SECRET=$(openssl rand -hex 32)\nADMIN_PASSWORD=$(openssl rand -hex 12)\nEOF\nchmod 600 .env\ndocker compose up -d\ndocker compose logs -f kimai\n```",{"type":43,"title":90,"items":91},"Environment variables worth knowing",[92,93,94,95,96],"`DATABASE_URL` — the Doctrine connection string: user, password, host `db`, database name, `charset=utf8mb4` and `serverVersion`. Because the password sits inside a URL, avoid `@`, `\u002F` or `:` in it; a hexadecimal secret sidesteps the problem.","`APP_SECRET` — the Symfony key used to sign sessions and tokens. Use a long random value, generate it once and leave it alone: changing it logs everyone out.","`ADMINMAIL` and `ADMINPASS` — the super-admin account created on first boot. Once the instance is running, manage accounts from the UI or the console.","`TRUSTED_HOSTS` — a comma-separated list of accepted host names. It must include your public domain, otherwise Symfony rejects the requests.","`MAILER_URL` — the mail transport. The ServOrbit template sets it to `null:\u002F\u002Flocalhost`, so no email is sent. Point it at an SMTP server to enable password resets and notifications.",{"type":66,"title":98,"steps":99},"Put Kimai Behind a Domain with HTTPS",[100,103,106,109,112],{"title":101,"body":102},"Point the DNS","Create an A record for `kimai.your-domain.com` pointing at the VPS public IP, and check propagation with `dig +short kimai.your-domain.com`.",{"title":104,"body":105},"Configure the reverse proxy","Port 8001 only listens on `127.0.0.1`, so only the local proxy can reach it. A sample Nginx block:\n\n```nginx\nserver {\n    listen 80;\n    server_name kimai.your-domain.com;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:8001;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```",{"title":107,"body":108},"Get the certificate","With certbot and its Nginx plugin, the Let's Encrypt certificate is issued and the `server` block is extended for port 443:\n\n```bash\napt install -y certbot python3-certbot-nginx\ncertbot --nginx -d kimai.your-domain.com\n```",{"title":110,"body":111},"Tell Kimai about the domain","Add `kimai.your-domain.com` to `TRUSTED_HOSTS`, then run `docker compose up -d` to recreate the container. If generated links still use `http:\u002F\u002F`, read the Kimai documentation on reverse proxies: `X-Forwarded-*` headers are only honoured when they come from a trusted proxy.",{"title":113,"body":114},"Close what you do not need","Open only ports 22, 80 and 443 in the firewall. MySQL publishes no port and should never have one.",{"type":39,"title":116,"body":117},"Create Users from the Command Line","The web UI is enough for daily account management, but the Kimai Symfony console is invaluable for scripted onboarding or for regaining access. The `kimai:user:create` command takes a username, an email address and a role, then prompts for the password:\n\n```bash\ndocker compose exec kimai \u002Fopt\u002Fkimai\u002Fbin\u002Fconsole kimai:user:create alice alice@your-domain.com ROLE_TEAMLEAD\n```\n\nThe same console offers `kimai:reload` to rebuild the cache after a configuration change, and `kimai:update` to run database migrations on installations outside Docker. Run `bin\u002Fconsole list kimai` inside the container to see the commands available in your version.",{"type":39,"title":119,"body":120},"The Data Model: Customers, Projects, Activities","Kimai organises time on three levels. A **customer** carries the currency, the time zone and the billing details. A **project** belongs to a customer and can have start and end dates, an order number and a budget. An **activity** describes the kind of work (development, meeting, support); it can be attached to a single project or be **global**, available everywhere. Each timesheet entry ties together a user, a project, an activity, a time range and, if needed, a description and tags. Getting this hierarchy right from the start saves painful clean-ups later: one customer per billed entity, one project per engagement or contract, and global activities for cross-cutting work.",{"type":43,"title":122,"items":123},"Rates and budgets",[124,125,126,127,128,129],"**Hourly rate** — can be set on the customer, project, activity or user; the most specific level applies to each entry.","**Fixed rate** — a flat amount per entry, handy for a job billed at a set price regardless of duration.","**Internal rate** — what an hour actually costs you, kept separate from the billed price so you can measure project profitability.","**Time or money budget** — on a customer, project or activity, with a visual consumption indicator.","**Monthly or total budget** — a monthly maintenance retainer is tracked differently from a fixed-price project over its whole lifetime.","**Overruns** — dashboards show how much of the budget is used, and a configuration setting lets you allow or block entries beyond it.",{"type":39,"title":131,"body":132},"Roles, Teams and Permissions","Kimai uses hierarchical roles, and the **Roles and permissions** screen lets you fine-tune what each role can see and change. **Teams** complete the picture: a customer, project or activity restricted to a team is only visible to its members, and the **team lead** can review and adjust the hours of their team without seeing the rest of the company. For an outside contractor, create a user account limited to a dedicated team.",{"type":43,"items":134},[135,136,137,138],"`ROLE_USER` — records and reviews their own hours on the projects they can access.","`ROLE_TEAMLEAD` — sees and edits the hours of their team members and reads their reports.","`ROLE_ADMIN` — manages customers, projects, activities, invoices and users.","`ROLE_SUPER_ADMIN` — full access, including system configuration and permissions.",{"type":39,"title":140,"body":141},"Invoicing from Timesheets","The invoicing module turns a selection of hours into a document. From the **Invoices** menu you pick a customer, a period, optionally a project, and then a **template**. Kimai computes the amounts from the rates, shows a preview and stores the invoice with a status (pending, paid, cancelled). Billed entries can be marked as **exported**, which prevents double billing and protects them from later edits.",{"type":66,"title":143,"steps":144},"Set Up Your First Invoice Template",[145,148,151,154],{"title":146,"body":147},"Create the template","Under **Invoices → Templates**, enter the issuer, address, bank details, payment terms and footer text.",{"title":149,"body":150},"Choose the output format","Pick a PDF or HTML renderer for a ready-to-send document, or an office format if you finish the invoice in another tool.",{"title":152,"body":153},"Define the numbering","Configure the invoice number format (prefix, year, counter) to get a continuous sequence that matches your accounting habits.",{"title":155,"body":156},"Set the tax","Enter the applicable tax rate in the template; create one template per tax regime if you bill customers at different rates.",{"type":158,"title":159,"body":160},"callout","VAT and mandatory mentions","Kimai computes tax from the rate entered in the template, but it knows nothing about your tax situation. Legal mentions, the applicable rate and invoice retention rules depend on your country and status, so have your accountant review the template. If you keep full books in an ERP such as Dolibarr, Kimai can remain the time-capture tool and its export can feed the final invoice.",{"type":39,"title":162,"body":163},"REST API and Integrations","Kimai exposes a **REST API** covering customers, projects, activities, timesheets and users. Its interactive documentation is served by your own instance at `\u002Fapi\u002Fdoc`, always in sync with the installed version. To authenticate a script, create an **API token** from your user profile and send it as a header:\n\n```bash\ncurl -s -H \"Authorization: Bearer YOUR_TOKEN\" \\\n  https:\u002F\u002Fkimai.your-domain.com\u002Fapi\u002Ftimesheets\n```\n\nA token inherits its user's permissions, so create a service account with the minimum role required instead of using the super-admin. The API lets you start a timer from a shortcut, feed hours into a dashboard, or sync projects with your ticketing tool.",{"type":39,"title":165,"body":166},"Extend Kimai with Plugins","Kimai has a plugin store on its official website, with free and paid extensions: expenses, custom fields, timesheet approval workflows, imports from other tools. A plugin is a directory placed in `var\u002Fplugins\u002F`. With Docker, mount that directory on a volume, or it disappears whenever the container is recreated — that is what `kimai_plugins` does in the compose file above. A typical installation:\n\n```bash\ndocker compose cp PluginNameBundle kimai:\u002Fopt\u002Fkimai\u002Fvar\u002Fplugins\u002F\ndocker compose exec kimai \u002Fopt\u002Fkimai\u002Fbin\u002Fconsole kimai:reload --env=prod\n```\n\nSome plugins add database tables and ship their own install command; follow the plugin page and check compatibility with your Kimai version before every upgrade.",{"type":39,"title":168,"body":169},"Backup and Restore","Almost everything lives in the MySQL database; the `kimai_data` and `kimai_public` volumes complete the backup. A logical dump is more portable than a hot copy of the MySQL files:\n\n```bash\ndocker compose exec -T db sh -c 'exec mysqldump --single-transaction -u\"$MYSQL_USER\" -p\"$MYSQL_PASSWORD\" \"$MYSQL_DATABASE\"' > kimai-$(date +%F).sql\ndocker run --rm -v kimai_kimai_data:\u002Fdata -v \"$PWD\":\u002Fbackup alpine tar czf \u002Fbackup\u002Fkimai_data-$(date +%F).tgz -C \u002Fdata .\n```\n\nThe actual volume name is prefixed with the Compose project name, so check it with `docker volume ls`. To restore, start an empty stack with the same `.env`, then load the dump back:\n\n```bash\ndocker compose exec -T db sh -c 'exec mysql -u\"$MYSQL_USER\" -p\"$MYSQL_PASSWORD\" \"$MYSQL_DATABASE\"' \u003C kimai-YYYY-MM-DD.sql\n```\n\nSchedule the dump nightly with cron, copy it off the VPS (Restic, BorgBackup or object storage) and test a restore at least once: a backup that has never been restored is only a hypothesis.",{"type":43,"title":171,"items":172},"Upgrades without surprises",[173,174,175,176,177],"**Back up first** — a dump taken right before the upgrade lets you roll back if a migration fails.","**Update the image** — `docker compose pull kimai && docker compose up -d kimai`, then follow `docker compose logs -f kimai`. On startup the container applies database migrations automatically.","**Pin a version** — in production, replace `apache-latest` with a versioned image tag so you decide when to upgrade.","**Read the release notes** — some major versions change requirements or plugin behaviour.","**Export regularly** — a CSV or XLSX export of timesheets is a readable copy, useful for an audit or a migration.",{"type":39,"title":179,"body":180},"Common Troubleshooting","Most Kimai-on-Docker incidents come down to a handful of known causes. Always start with `docker compose logs kimai` and `docker compose ps`.",{"type":43,"items":182},[183,184,185,186,187,188],"**\"Untrusted Host\" or a 400 error after adding a domain** — the host name is missing from `TRUSTED_HOSTS`. Add it and recreate the container.","**500 error and \"Permission denied\" on `var\u002F`** — often after a console command run as a different user from the web server. Restore ownership with `docker compose exec kimai chown -R www-data:www-data \u002Fopt\u002Fkimai\u002Fvar`, then run `kimai:reload`.","**Configuration change has no effect** — the Symfony cache is serving the old version: `docker compose exec kimai \u002Fopt\u002Fkimai\u002Fbin\u002Fconsole kimai:reload --env=prod`.","**Kimai keeps restarting on first boot** — the database is not ready or `DATABASE_URL` is wrong. Check the `db` healthcheck and the credentials in `.env`.","**`http:\u002F\u002F` links behind the HTTPS proxy** — `X-Forwarded-Proto` headers are not sent or not trusted; review the proxy configuration.","**Forgotten password with no email configured** — `MAILER_URL` points to `null:\u002F\u002F`: reset the password from an admin account or create a new administrator from the console.",{"type":190,"title":191,"headers":192,"rows":198},"comparison","Kimai vs Toggl Track, Clockify and Harvest",[193,194,195,196,197],"Criterion","Kimai (self-hosted)","Toggl Track","Clockify","Harvest",[199,203,207,211,216,221,225],[200,201,202,202,202],"Licence","Open source (MIT)","Proprietary",[204,205,206,206,206],"Hosting","Your VPS","Vendor SaaS",[208,209,210,210,210],"Where data lives","Your MySQL database","Vendor infrastructure",[212,213,214,215,214],"Cost model","Server only, no per-user fee","Limited free tier, then subscription","Free tier, then subscription",[217,218,219,219,220],"Invoicing","Built-in module (templates, numbering, tax)","Depends on plan","Built into the product",[222,223,224,224,224],"API","REST, tokens, bundled docs","REST",[226,227,228,228,228],"Customisation","Source code, plugins, configuration","Settings and integrations",{"type":39,"title":230,"body":231},"Sizing Your VPS","Kimai is frugal: most of the load comes from MySQL and from reports over long periods. For a freelancer or a small team, **1 vCPU and 1 to 2 GB of RAM** is enough. Beyond roughly twenty active users, or if you regularly produce yearly reports and large exports, plan for **2 vCPUs and 4 GB**, which leaves headroom for the MySQL InnoDB cache. Disk usage stays modest: a few gigabytes cover years of timesheets, but keep room for local dumps before they are shipped off the server.",{"type":84,"body":233},"Before inviting your team, set the ground rules under **Settings**: duration rounding, whether future entries are allowed, and locking of periods that have already been billed. These choices are far easier to make on an empty instance than on months of history.","Deploy Kimai on Your VPS in 60 Seconds","ServOrbit pre-configures the full stack (Apache\u002FPHP + MySQL 8) and generates your admin credentials — ready to log your first hours.","Launch Kimai","\u002Fapplications\u002Ferp-business-management\u002Fkimai",[239,257,277],{"id":240,"slug":241,"slugs":242,"title":246,"excerpt":247,"readTime":248,"views":18,"isPinned":19,"noindex":19,"publishedAt":249,"updatedAt":250,"category":251,"categories":252,"featuredImage":30,"bgImage":31,"posterImage":254,"relatedSolution":255},143,"hosting-dolibarr-on-a-vps-open-source-erp-under-control",{"fr":243,"en":241,"ar":244,"es":245},"heberger-dolibarr-vps","استضافة-dolibarr-على-خادم-vps-نظام-erp-حر-تحت-السيطرة","alojar-dolibarr-en-un-vps-erp-libre","Hosting Dolibarr on a VPS: open source ERP under control","Deploy Dolibarr on a ServOrbit VPS: open source ERP\u002FCRM, a controlled database, backups and HTTPS access for your SME.",11,"2026-02-02T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[253],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-dolibarr-vps-poster.svg",{"categorySlug":34,"appSlug":256},"dolibarr",{"id":258,"slug":259,"slugs":260,"title":264,"excerpt":265,"readTime":266,"views":23,"isPinned":19,"noindex":19,"publishedAt":267,"updatedAt":268,"category":269,"categories":274,"featuredImage":30,"bgImage":31,"posterImage":276,"relatedSolution":30},37,"deploy-your-applications-with-nginx-proxy-manager-on-a-vps",{"fr":261,"en":259,"ar":262,"es":263},"deployer-avec-nginx-proxy-manager","انشر-تطبيقاتك-باستخدام-nginx-proxy-manager-على-خادم-vps","desplegar-con-nginx-proxy-manager","Deploy your applications with Nginx Proxy Manager on a VPS","Manage domains, SSL and reverse proxy for several services on a VPS with Nginx Proxy Manager: installation, Docker networks, 502 troubleshooting and configuration.",10,"2026-05-14T00:00:00+00:00","2026-11-08T01:13:14+00:00",{"id":270,"name":271,"slug":272,"color":273,"icon":272},3,"Deployment","deploiement","bg-success\u002F10 text-success",[275],{"id":270,"name":271,"slug":272,"color":273,"icon":272},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-nginx-proxy-manager-poster.svg",{"id":278,"slug":279,"slugs":280,"title":284,"excerpt":285,"readTime":248,"views":18,"isPinned":19,"noindex":19,"publishedAt":286,"updatedAt":287,"category":288,"categories":294,"featuredImage":30,"bgImage":31,"posterImage":296,"relatedSolution":30},113,"automate-your-vps-backups-with-restic",{"fr":281,"en":279,"ar":282,"es":283},"sauvegardes-restic-vps","أتمتة-نسخ-خادمك-vps-الاحتياطية-باستخدام-restic","copias-de-seguridad-vps-con-restic","Automate Your VPS Backups with Restic","Automate your VPS backups with Restic: encrypted snapshots, deduplication and shipping to S3 or any object backend.","2026-02-27T00:00:00+00:00","2026-11-08T01:13:12+00:00",{"id":289,"name":290,"slug":291,"color":292,"icon":293},8,"Security & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[295],{"id":289,"name":290,"slug":291,"color":292,"icon":293},"\u002Fblog\u002Fcovers\u002Fsauvegardes-restic-vps-poster.svg",true,1794270487890]