-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bareos backup server #94
Comments
2 things I see that might be problems. The first being that the SQL DB password is passed as an enviromental variable. This can be seen in top...the other being that all the components use docker-compose which I'm not certain how to achieve this with Rockstor. |
Still interested in this, but have to focus elsewhere at the moment. Any takers on this one. |
Overview of components:From: https://www.bareos.com/learn/documentation/
Notes:
Ergo: Save & Restore operations require a minimum of 4 daemons to be co-configured and running:
|
#Release versions
and the GitHub releases page: https://github.com/bareos/bareos/releases 4th June 2024
However our indicated, and long running, https://hub.docker.com/u/barcus/ has versions 20, and 21 only (updated 3 days ago as of this comment). From Official Bareos Subscription Repository (.com) https://download.bareos.com/bareos/release/ we have 21, 22, & 23 as NOT EOL. Version Interoperabiliy info
BareOS Binary release policy
|
DB setupWe have to establish/document how we are to perform the PostgreSQL DB setup to host BareOS's https://docs.bareos.org/IntroductionAndTutorial/InstallingBareos.html#prepare-bareos-database
[EDIT: in our proposed docker images we have, if DB_INIT=true is set on the director image, the above executed via the docker entry script: https://github.com/barcus/bareos/blob/master/director-pgsql/22-alpine/docker-entrypoint.sh ] We have the ability to perform 'special' operations per Rock-on, on install etc: but this is to be avoided as it's inevitably fragile given upstream changes. Better to reference upstream docs, and document specific setups for custom Rock-ons or Rock-on combinations such as we may be looking at there: i.e. we previously hosted various versions of PostgreSQL, via Rock-ons; but these have since been removed as they exceeded EOL: #314 There is also the issue of an accidental Rock-ons reinstall re-setting a BareOS For our proposed BareOS docker images (newer alphine variants) and more recent BareOS, our Catalogue MaintenanceUpstream BareOS docs on DB setup: Manual Catalogue DB setup docshttps://docs.bareos.org/TasksAndConcepts/CatalogMaintenance.html#manual-configurationIncidental note: our pending how-to for his Rock-on/Rock-on set should advise, by default, accurate mode: |
Simplicity/Usability/Accessibility vs Complexity/FlexibilityWe have the choice here to present a host of Rock-ons each expressing/encompassing/encapsulating a BareOS service, interlinked by-hand/duplicated-config & rock-nets: https://rockstor.com/docs/interface/overview.html#joining-rocknets, or to attempt a simplification/set. I favour the latter.
As such - given Rockstor's (and Rock-ons) nature: Appliance in essence; I favour the compromised multi-docker image Rock-on approach here: with an integrated Web-UI via barcus/bareos-webui:latest image: upstream doc reference: N.B. we also have from BareOS docs: https://docs.bareos.org/Appendix/HardwareSizing.html#director
Experimentation to follow on the feasibility on this approach. We may end up having to host individual Rock-ons for some, or all, of these BareOS deamons, but the associated user overhead complexity may well rival a bare-metal install on our host OS: voiding the Appliance nature we are aiming at here. Especially given advanced users could implement BareOS on our host OS anyway - as-is. Opinions welcome, but regardless I'll try some mock-ups and try to present proof of concept PR's for this issue. |
On our preferred PostgreSQL version we have from https://www.postgresql.org/support/versioning/ that v12 is getting its final release on November 14th, 2024 and is the last version currently supported. Ergo we go for at least 14 given the prior reference in #94 (comment) that BareOS v20+ is PostgreSQL 14 compatible. Althought our proposed docker hub image provider barcus indicates a v12 (postgres:12) in their docker compose example. BareOS doc entry re PostgreSQl version: https://docs.bareos.org/Appendix/HardwareSizing.html#postgresql-version
|
Postgres docker hubhttps://hub.docker.com/_/postgres Given the initial plan here is to have a multi image Rock-on they would need to use the docker @FroggyFlox has already enabled within Rock-ons the partial replacement of user-defined networks: known as rocknets within our implementation. @FroggyFlox As I read this, we appear to now be cornered regarding the initial plan here for a multi-image Rock-on. And have-to instead implement all BareOS docker images required as individual Rock-ons; and document tying them together via your rocknets. Does that sound right to your? [EDIT] from the below PR we have @FroggyFlox's following comment:
Which is used in the Link to PR that addressed the deprecation of docker --link via docker networks (rocknets):
|
@phillxnet , Yes docker has deprecated links a long time ago now, but Rockstor still understands that concepts and uses docker networks to create the equivalent. We indeed have 2 types of rocknets:
So you should still be able to use that "link" object and Rockstor will automatically create the required docker networks and attach the containers in question to each of these networks. Another option would be for Rockstor to support a "network" object in the JSON that would define network name and containers to attach but that's for another day. |
Save point - work-in-progress
|
https://github.com/barcus/bareos/blob/master/director-pgsql/22-alpine/docker-entrypoint.sh
Which the docker script then edits according to environmental variables. |
Client side (BareOS
|
Save point 2 - work-in-progress
Main Description improvement plus initial typo corrections.
Wording improvements re labels/descriptions etc for brevity and consistency.
More typos and capitalisation improvements. Ensure all labels are unique.
Multi Container BareOS server set Rock-on containing: - Director Service (overall controller). - Catalog Service (Postgres DB for Director). - Storage Service (Back-end Storage for Director and File (client) services). - Web-UI Service (Director interface). Uses custom docker images at https://hub.docker.com/u/barcus/ as no official docker images are available.
- BAREOS_SD_PASSWORD director & storage containers. - Place-holder ADMIN_MAIL (director). - WEBHOOK_NOTIFICATION=true (director) to avoid/disable smtp config for now. - BAREOS_DIR_HOST to bareos-webui.
Required by bareos-webui 22 onwards to provide php-fpm. These two webui containers share volumes, via --volumes-from, and an associated launch_order. Additionally we specify a BareOS 'WebUI' data Share to host the website data files that these two container use. These files are installed by the bareos-webui container docker-entrypoint.sh.
Rockstor forces unique share allocation, however - bareos-webui-php-fpm needs /var/www/html on web-data but web-data is populated by bareos-webui: and - bareos-webui populates web-data via /usr/share/bareos-webui Plus, bareos-webui requires bareos-webui-php-fpm so the later must start before the former. Have bareos-webui-php-fpm establish bareos-webui volumes, and add share duplicate mount it requires via opts -v. Working around Rockstor repeate share use limitation. Then have bareos-webui inherit via opts (--volumes-from bareos-webui-php-fpm) all 3 volumes. Only two of which it is required to share with it's php-fpm counterpart. We assume no side effects from: "/mnt2/bareos-webui-data:/var/www/html" applied via inheritance within bareos-webui container. Currently, requires dictating a share name !!
Our Bareos-webui container uses bareos-webui-php-fpm as its fastcgi server via `fastcgi_pass bareos-webui-php-fpm:9000;`. Remove director to bareos-webui-php-fpm docker network and add dedicated bareos-webui to bareos-webui-php-fpm to enable private use of the php-fpm by bareos-webui. Resolving a prior failure to resolve the php-fpm containers docker name.
It appears that we need this network in order that the PHP code this container carries can also resolve our director. We have a current limitation regarding unique `source_container` network config entries, which prevents us from simply having `bareos-webui-php-fpm` as an additional source_container entry in the "bareos-director" network. This was encountered when adding the bareos-webui network.
The default config of our director container includes an expectation of a local 'File' (Client) service: used in a pre-configured Catalog backup task and what looks like a buggy config backup setup. Includes: - prior omission to define BAREOS_SD_HOST in director container. - incidental rationalising/reduction on user text.
@FroggyFlox & @Hooverdan96 From what I've learned from barcus's work I have begun rolling our own docker images using an openSUSE base via their official docker image as a base, and in-turn installing packages directly downloaded from bareos.org (for their non subscription variant initially). And hope to later include their bareos.com images what required a subscription to access. Closing my second draft attempt at this server/service set to embark on hopefully the final PR ready for wider input/review. |
Noting a new release blog posted as of 15th November: https://www.bareos.com/blog/
|
Multi-container Bareos server set Rock-on containing: - Director Service (overall controller). - Catalog Service (Postgres DB for Director). - Storage Service (Back-end Storage for Director and File (client) services). - Director-local File (client) Service (for Catalog backup capability). - Web-UI Service (Director Web-UI interface). Each of the above 5 services are hosted in their own dedicated containers. Uses custom-made docker images from Rockstor developers as no official docker images where available.
The File (client) Service, bareos-fd, must be able to name resolve the bareos-storage container, as the Director instructs the File service to seek out a specific Storage service. File and Storage then need to communicate directly on a name basis.
We intend to run as uid 105, make this explicity via the uid Rock-on directive.
As a server-set, with ordered install, we can inherit (via the shared config arrangement) all intra Bareos service passwords. File and Storage containers are now able to self-config when uses in this intended AIO setup. This is akin to the rpms default behaviour of reading each-others config in order to auto-setup the initial server set. Includes minor Description rewording.
Intended to enable access to Rockstor as an SMTP relay; enabling the default Bareos email notification with minimum setup.
BareOS is a fully AGPLv3 fork of bacula, please see the related discussion for a bacula rockon in issue #93
Copying my comments from that issue in here:
"I'm rather favouring we adopt @pauldsmyth move and consider Bareos given they have a far more current binary download for a bunch of linux distros and win.
Also from their web page:
"Bareos is a 100% open source fork of the backup project from bacula.org. The fork is in development since late 2010, it has a lot of new features.
The source has been published on github, licensed AGPLv3."
"Backup Archiving Recovery Open Sourced"
https://github.com/bareos/
see also:
https://www.bareos.org/en/
https://www.bareos.org/en/download.html
[EDIT] further to exploring barcus's docker hub images in:
I have concluded that we should instead roll our own docker images. Predominantly as I would rather use unmodified upstream provided packages, and to also, in-time, provide for their stable branch subscription supported efforts.
It is also important to have up-to-date packages which barcus's were not: being dependant on 3rd / 4th parties to maintain on an upstream unsupported OS base.
Plus there are [EDIT: versions]up to date (by major version number) BareOS (16.2) docker imagesfor all components with excellent (rather than no) documentation by barcus on dockerhub: [EDIT: above version info pertains to March 2017 issue creation date ; as of Aug 2024 we have continued maintenance of the barcus repo on dockerhub but with tagged versions of 20 (EOL), 21 (oldest of 3 non-EOL versions available: 21, 22, 23) while thelatest
tag looks to correspond to version 22].https://hub.docker.com/u/barcus/On the grounds that bacula would in comparison appear almost abandoned from the client binary point of view and has very few docker image options I'm changing this Issue to BareOS from Bacula. [EDIT] However there are also few options for BareOS docker images, with many being minor edits of barcus's. This is further encouragement of the new direction this issue has taken in late 2024 re our roll-our-own docker images. Having learned a lot from barcus's many years of building them for their particular setup.
If anyone has a working knowledge of BareOS please feel free to contribute to this issue.
Upstream Docs Quick Start: https://docs.bareos.org/IntroductionAndTutorial/WhatIsBareos.html#quick-start
The text was updated successfully, but these errors were encountered: