Line 1: |
Line 1: |
− | ==How to install MongoDB 4.0== | + | ==How to install MongoDB== |
| | | |
− | {{Note box| All info is based on SME Server 9 only but I have just started to test on v10 - see notes below}} | + | {{Note box| Manual configuration required}} |
| | | |
− | ===Install Official Repository===
| + | MongoDB 5.0+ requires the AVX CPU instruction set |
| | | |
− | This should work for every version of Koozali SME
| + | lscpu |grep avx |
| | | |
− | You may need to change the mongodb version as required
| + | ===Install Official Repository=== |
| | | |
− | db yum_repositories set mongodb repository \
| + | Use ExtraRepositories from here |
− | BaseURL https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/\$basearch/ \
| |
− | EnableGroups no \
| |
− | GPGCheck yes \
| |
− | Name "MongoDB" \
| |
− | GPGKkey https://www.mongodb.org/static/pgp/server-4.0.asc \
| |
− | Visible no \
| |
− | status disabled
| |
| | | |
− | signal-event yum-modify
| + | https://wiki.koozali.org/Extrarepositories |
| | | |
− | yum install mongodb-org --enablerepo=mongodb
| + | Note that versions are available from 4.0/1/2/3/4 -> 5.0 -> 6.0 |
| | | |
− | If refuses to install because of no GPG Key you can change '''GPGCheck''' above from '''Yes''' to '''No''' and try '''yum install...''' again or
| + | Please check which versions are deprecated - they should not be used. |
| | | |
− | rpm --import https://www.mongodb.org/static/pgp/server-4.0.asc
| + | https://www.mongodb.com/support-policy/lifecycles |
| | | |
− | Or
| + | As of July 2022 the oldest supported version is 4.2 until April 2023 |
| | | |
− | yum install mongodb-org --enablerepo=mongodb --nogpgcheck | + | yum install smeserver-extrarepositories-mongodb |
| | | |
− | ===Start Mongo===
| + | signal-event yum-modify |
| | | |
− | {{Warning box|Please check additional notes below before trying this section}}
| + | Install your chosen version: |
| | | |
− | {{Note box|If you start mongo like this you will run mongo as root.
| + | yum --enablerepo=mongodb4.2 install mongodb-org |
− | When mongo later tries to start automatically it may fail because it will be started as the mongod user and won't be able to access the DB files.}}
| |
| | | |
− | /etc/init.d/mongod start | + | If refuses to install because of no GPG Key you can change '''GPGCheck''' above from '''Yes''' to '''No''' and try '''yum install...''' again or |
| | | |
− | Add the symlinks to start automatically:
| + | rpm --import https://www.mongodb.org/static/pgp/server-4.0.asc |
| | | |
− | ln -s /etc/init.d/mongod /etc/rc.d/rc6.d/K03mongodb
| + | Or |
− | ln -s /etc/init.d/mongod /etc/rc.d/rc7.d/S57mongodb
| |
| | | |
− | Optional: create symlink to use mongo or mongodb as service name
| + | yum --enablerepo=mongodb4.2 install mongodb-org --nogpgcheck |
| | | |
− | ln /etc/init.d/mongod /etc/init.d/mongodb
| + | ===Starting Mongo=== |
− | | |
− | To ensure everything is all right:
| |
− | | |
− | signal-event post-upgrade
| |
− | signal-event reboot
| |
− | | |
− | ===Additional Notes=== | |
− | | |
− | Note - I need to test this again This is my initial observation.
| |
− | | |
− | As far as I can see, the link above to mongodb is not necessary.
| |
− | | |
− | It may need this to set on and off correctly in other service levels:
| |
− | | |
− | chkconfig mongod on
| |
− | | |
− | Create a service link in in rc7.d:
| |
− | | |
− | ln -s /etc/init.d/mongod /etc/rc.d/rc7.d/S57mongod
| |
− | | |
− | To use e-smith-service it will need a key:
| |
− | | |
− | config set mongod service status enabled
| |
− | | |
− | You should now be able to do:
| |
− | | |
− | service mongod start|stop|restart etc
| |
− | | |
− | Mongo should come up on boot. | |
− | | |
− | | |
− | ==Koozali SME v10==
| |
| | | |
| + | {{Warning box|Please check additional notes below before trying this section}} |
| {{Warning box| Complete work in progress - here be Dragons!}} | | {{Warning box| Complete work in progress - here be Dragons!}} |
− |
| |
− | ===Install===
| |
− |
| |
− | WIP
| |
− |
| |
− | db yum_repositories set mongodb42 repository \
| |
− | BaseURL [https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.2/$basearch/ https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.2/\$basearch/] \
| |
− | EnableGroups no \
| |
− | GPGCheck yes \
| |
− | Name "MongoDB" \
| |
− | GPGKey https://www.mongodb.org/static/pgp/server-4.2.asc \
| |
− | Visible no \
| |
− | status disabled
| |
− |
| |
− |
| |
− | Use the above method to add the repo and then:
| |
− |
| |
− | yum --enablerepo=mongodb install mongodb-org
| |
| | | |
| We need a db config entry for SME to recognise it: | | We need a db config entry for SME to recognise it: |
Line 117: |
Line 59: |
| WantedBy=sme-server.target | | WantedBy=sme-server.target |
| | | |
− | ===Using keys=== | + | ===Configuration File=== |
− | | |
− | config setprop mongod service status enabled
| |
| | | |
| Minimal config I use for Rocket.Chat | | Minimal config I use for Rocket.Chat |
Line 141: |
Line 81: |
| port: 27017 | | port: 27017 |
| bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. | | bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. |
| + | # Enable replication for Rocket.Chat |
| replication: | | replication: |
| replSetName: rs0 | | replSetName: rs0 |
| + | |
| + | |
| + | Once started you need to initialise the replicaset. Make sure to exit from the mongo instance and run from the cli: |
| + | |
| + | mongo --eval "printjson(rs.initiate())" |
| + | |
| + | You should now have a working mongoDB good enough to use with Rocket.Chat |
| + | |
| + | |
| + | ===Other settings=== |
| + | |
| + | nano /etc/security/limits.conf |
| + | |
| + | These settings are automatically added during installation |
| + | |
| + | @mongod soft nproc unlimited |
| + | @mongod hard nproc unlimited |
| + | @mongod soft nofile 64000 |
| + | @mongod hard nofile 64000 |
| + | |
| + | Adding a user |
| + | |
| + | https://www.linode.com/docs/guides/install-mongodb-on-centos-7/ |
| + | |
| + | use admin |
| + | |
| + | db.createUser( |
| + | { |
| + | user: "admin", |
| + | pwd: "admin123", |
| + | roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] |
| + | } |
| + | ) |
| + | |
| + | show users |
| + | |
| + | We can then set Mongo to force authentication when connecting. |
| + | |
| + | nano /usr/lib/systemd/system/mongod.service.d/50koozali.conf |
| + | |
| + | Add: |
| + | |
| + | [Service] |
| + | Environment="OPTIONS=--auth -f /etc/mongod.conf" |
| + | |
| + | Restart Mongo |
| + | |
| + | systemctl restart mongod |
| + | |
| + | You should now need a password to login. |
| + | |
| + | ===Templating mongod.conf=== |
| + | |
| + | This is possible but we need to create a new file so we do not overwrite the original - otherwise yum/rpm will complain. |
| + | |
| + | Something like /etc/mongod/mongod.conf |
| + | |
| + | Template fragments in |
| + | |
| + | /etc/e-smith/templates/etc/mongod/mongod.conf |
| + | |
| + | We can then amend the systemd overrride |
| + | |
| + | nano /usr/lib/systemd/system/mongod.service.d/50koozali.conf |
| + | |
| + | Add this: |
| + | |
| + | [Service] |
| + | Environment="OPTIONS=-f /etc/mongod/mongod.conf" |
| + | |
| + | ===Dump and restore=== |
| + | |
| + | Samples - YMMV. |
| + | |
| + | Quick little script to dump the Rocket.Chat collection: |
| + | |
| + | #!bin/bash |
| + | echo "Dump with Users/Roles" |
| + | mongodump --dumpDbUsersAndRoles -d rocketchat -o /root/backup/rocketchatmongo |
| + | echo "dump all" |
| + | mongodump -d rocketchat -o /root/backup/rocketchatmongo-all |
| + | |
| + | |
| + | {{Warning box| Do not restore between versions!!}} |
| + | |
| + | If you export from a version eg 4.0 then restore to that version. Do not try and restore 4.0 to 4.2 or higher. |
| + | |
| + | Then change your repo, and then upgrade mongo. |
| + | |
| + | To restore: |
| + | |
| + | mongorestore /root/backup/rocketchatmongo-all |
| + | |
| + | ===Backup with system=== |
| + | |
| + | With credit to Daniel Berteaud |
| + | |
| + | Action script to dump the mongo DB on pre-backup event |
| + | |
| + | mkdir -p /home/e-smith/db/mongo |
| + | |
| + | cat <<_EOF > /etc/e-smith/events/actions/mongodb-dump |
| + | #!/bin/bash -e |
| + | /usr/bin/mongodump --quiet --out /home/e-smith/db/mongo/ |
| + | _EOF |
| + | |
| + | chmod +x /etc/e-smith/events/actions/mongodb-dump |
| + | cd /etc/e-smith/events/pre-backup |
| + | ln -s ../actions/mongodb-dump ./S60mongodb-dump |
| | | |
| ===Vaporise or reinitialise the database=== | | ===Vaporise or reinitialise the database=== |
Line 165: |
Line 215: |
| [[Category:Howto]] | | [[Category:Howto]] |
| [[Category:Administration]] | | [[Category:Administration]] |
| + | [[Category:Database]] |