{"id":612,"date":"2025-02-11T15:54:13","date_gmt":"2025-02-11T21:54:13","guid":{"rendered":"https:\/\/bblaze.xyz\/?p=433"},"modified":"2025-12-08T16:06:46","modified_gmt":"2025-12-08T22:06:46","slug":"installing-nextcloud-aio","status":"publish","type":"post","link":"https:\/\/jb03.com\/index.php\/2025\/02\/11\/installing-nextcloud-aio\/","title":{"rendered":"Installing Nextcloud AIO"},"content":{"rendered":"\n<p>This is going to be the easiest complex thing you have ever done.<\/p>\n\n\n\n<p>Nextcloud is kinda like Dropbox meets Zoom and Google Office. You should probably check out the <a href=\"https:\/\/nextcloud.com\/\">official website<\/a>.<\/p>\n\n\n\n<p>Nextcloud AIO is now (wasn&#8217;t until recently) the official method to install the open-source, free, community version of Nextcloud. Installing Nextcloud AIO has several advantages over installing only Nextcloud. The AIO version includes automated installation, updates, &amp; backups. It also comes with STUN &amp; TURN servers, and the &#8220;high-performance backend&#8221; for Talk (Nextcloud&#8217;s version of Zoom.)<\/p>\n\n\n\n<p>The bottom line is that Virtualmin + Docker + Portainer + Nextcloud AIO = Awesomeness!<\/p>\n\n\n\n<p>So let&#8217;s have at it.<\/p>\n\n\n\n<p>As with all of these examples, the first thing we need is a fully qualified domain name, a URL, where we are going to host Nextcloud. In this example were going to use: <strong>nextcloud.imfbsbn.com<\/strong>.<\/p>\n\n\n\n<p>If you read the previous post about how I setup Virtualmin, you will know that I do not use the DNS features within VM. Just so were clear, VM provides DNS services <span style=\"text-decoration: underline;\">beautifully<\/span>. My reasons for not using VM&#8217;s DNS has nothing to do with VM. My reasoning is that my domain registrar \u2013 a multi-multimillion dollar organization \u2013 can provide DNS more reliably than the VPS server I rent for $12\/mo.<\/p>\n\n\n\n<p>So here you have a choice:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If VM is hosting your DNS \u2013 if you followed the official setup instructions \u2013 then all you have to do is add the domain to VM.<\/li>\n\n\n\n<li>If you&#8217;re like me, and VM is NOT hosting your DNS, then you have to create your DNS record at your domain registrar. <br>This is me. So this is what I&#8217;m going to do first.<\/li>\n<\/ul>\n\n\n\n<p>I&#8217;m going to create the Nextcloud DNS record which looks like this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/NC-one.png\" alt=\"\" class=\"wp-image-436\"\/><\/figure>\n<\/div>\n\n\n<p>Again, this is what it looks like at Namecheap. Things at your registrar may appear different. Also, you can see the records I&#8217;ve created in previous projects.<\/p>\n\n\n\n<p>Next, we need to add the domain name to Virtualmin and set up the reverse proxy. Virtualmin makes this super easy.<\/p>\n\n\n\n<p>Log into the Virtualmin panel,<\/p>\n\n\n\n<p>Near the top left of the menu, click on &#8220;Create Virtual Server&#8221;.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/NC-two-1024x619.png\" alt=\"\" class=\"wp-image-438\"\/><\/figure>\n<\/div>\n\n\n<p>Quick note on &#8220;top-Level&#8221; &amp; &#8220;Sub-Servers&#8221;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Top-Level Servers | You can think of these like an account. If you and three friends each own five domains and you wanted to share a server the root account would create four &#8220;Top-Level&#8221; servers; one for each friend. Each person would be able to login to Virtualmin and be the administrator for their account and whatever &#8220;Sub- Servers&#8221; (a.k.a. domains) they wish to add.<\/li>\n\n\n\n<li>Because I&#8217;m the only &#8220;admin&#8221; with access to my server, I&#8217;m always logging in as root. I want to have access to all of the domains hosted on the server at all times. I don&#8217;t want to have to log out, and login as a different user to make changes to any particular domain. Therefore I generally add all domains to my server as &#8220;Top-Level Servers.&#8221;<\/li>\n<\/ul>\n\n\n\n<p>Just like we added the domain for portainer, we will add this domain for nextcloud. <\/p>\n\n\n\n<p>For domain name we will enter our fully qualified domain name. Description can be anything you want.<\/p>\n\n\n\n<p>As for the administration password, I just clicked on the little key with the + sign and VM inserted a password for me. I didn\u2019t write it down because I\u2019m the only user of the system and I will always be logging in as root. In fact, I don&#8217;t need to write down either the username or the password. We will never use them.<\/p>\n\n\n\n<p>Just like before, a few changes to the default settings:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For the administration username I prefer to use something custom over the automatic feature.<\/li>\n\n\n\n<li>I unchecked the boxes for DNS, MariaDB, Mail, Spam, Webmin, &amp; AWStats because this domain will not use any of those features.<\/li>\n\n\n\n<li>This domain WILL REQUIRE Apache (as a reverse proxy.) So leave that box checked.<\/li>\n<\/ul>\n\n\n\n<p>When you\u2019re all set click the orange Create Server button.<\/p>\n\n\n\n<p>Virtualmin will work its magic adding the domain to the server. Depending on your hardware the process might take 1-2 minutes.<\/p>\n\n\n\n<p>When it\u2019s done, click on the blue button at the bottom that says Return to Server Details.<\/p>\n\n\n\n<p>Before we leave the Virtualmin panel, we\u2019re going to set up the proxy forwarding (so we don\u2019t have to come back later.)<\/p>\n\n\n\n<p>Confirm VM is ready to modify the correct domain. It should be listed at the top of the left menubar.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/NC-three.png\" alt=\"\" class=\"wp-image-440\"\/><\/figure>\n<\/div>\n\n\n<p>First click on Web Configuration. Then click on Edit Proxy Website.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/NC-four-1024x277.png\" alt=\"\" class=\"wp-image-441\"\/><\/figure>\n<\/div>\n\n\n<p>Click on the \u201cYes\u201d radio button to enable proxying.<\/p>\n\n\n\n<p>Inside the Proxy to URL box enter:&nbsp;<strong>http:\/\/127.0.0.1:11100\/<\/strong><\/p>\n\n\n\n<p>Click on Save and Apply. And we have done everything we need to do inside Virtualmin.&nbsp;<\/p>\n\n\n\n<p>Assuming you have installed Portainer \u2013 as shown in the <a href=\"https:\/\/jb03.com\/installing-portainer\/\">previous post<\/a> \u2013 you don&#8217;t even need to access the CLI in order to complete the installation.<\/p>\n\n\n\n<p>Instead, log into Portainer, click on the &#8220;primary&#8221; installation, and then click on &#8220;stacks&#8221;.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/NC-five-1024x233.png\" alt=\"\" class=\"wp-image-443\"\/><\/figure>\n<\/div>\n\n\n<p>Over near the top right, click on the Add Stack button.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/NC-six-1024x281.png\" alt=\"\" class=\"wp-image-444\"\/><\/figure>\n<\/div>\n\n\n<p>Give your stack a name. Be aware and must meet Linux standards for usernames. The system will bark at you if it&#8217;s unhappy.<\/p>\n\n\n\n<p>The &#8220;web editor&#8221; is selected by default. That&#8217;s what were going to use.<\/p>\n\n\n\n<p>Then you&#8217;re going to copy and paste the following code into the window.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  nextcloud-aio-mastercontainer:\n    image: nextcloud\/all-in-one:latest\n    init: true\n    restart: always\n    container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly\n    volumes:\n      - nextcloud_aio_mastercontainer:\/mnt\/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!\n    network_mode: bridge # add to the same network as docker run would do\n    ports:\n#      - 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https:\/\/github.com\/nextcloud\/all-in-one\/blob\/main\/reverse-proxy.md\n      - 8080:8080\n#      - 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https:\/\/github.com\/nextcloud\/all-in-one\/blob\/main\/reverse-proxy.md\n    environment: # Is needed when using any of the options below\n      # AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-disable-the-backup-section\n      # AIO_COMMUNITY_CONTAINERS: # With this variable, you can add community containers very easily. See https:\/\/github.com\/nextcloud\/all-in-one\/tree\/main\/community-containers#community-containers\n      APACHE_PORT: 11100 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https:\/\/github.com\/nextcloud\/all-in-one\/blob\/main\/reverse-proxy.md\n      APACHE_IP_BINDING: 127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) that is running on the same host. See https:\/\/github.com\/nextcloud\/all-in-one\/blob\/main\/reverse-proxy.md\n      # APACHE_ADDITIONAL_NETWORK: frontend_net # (Optional) Connect the apache container to an additional docker network. Needed when behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) running in a different docker network on same server. See https:\/\/github.com\/nextcloud\/all-in-one\/blob\/main\/reverse-proxy.md\n      # BORG_RETENTION_POLICY: --keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-adjust-borgs-retention-policy\n      # COLLABORA_SECCOMP_DISABLED: false # Setting this to true allows to disable Collabora's Seccomp feature. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-disable-collaboras-seccomp-feature\n      # NEXTCLOUD_DATADIR: \/mnt\/ncdata # Allows to set the host directory for Nextcloud's datadir. \u26a0\ufe0f\u26a0\ufe0f\u26a0\ufe0f Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https:\/\/github.com\/nextcloud\/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir\n      # NEXTCLOUD_MOUNT: \/mnt\/ # Allows the Nextcloud container to access the chosen directory on the host. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host\n      NEXTCLOUD_UPLOAD_LIMIT: 24G # Can be adjusted if you need more. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud\n      # NEXTCLOUD_MAX_TIME: 3600 # Can be adjusted if you need more. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud\n      NEXTCLOUD_MEMORY_LIMIT: 1024M # Can be adjusted if you need more. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud\n      # NEXTCLOUD_TRUSTED_CACERTS_DIR: \/path\/to\/my\/cacerts # CA certificates in this directory will be trusted by the OS of the nextcloud container (Useful e.g. for LDAPS) See https:\/\/github.com\/nextcloud\/all-in-one#how-to-trust-user-defined-certification-authorities-ca\n      # NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup\n      # NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container\n      # NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container\n      # NEXTCLOUD_ENABLE_DRI_DEVICE: true # This allows to enable the \/dev\/dri device for containers that profit from it. \u26a0\ufe0f\u26a0\ufe0f\u26a0\ufe0f Warning: this only works if the '\/dev\/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https:\/\/github.com\/nextcloud\/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud\n      # NEXTCLOUD_ENABLE_NVIDIA_GPU: true # This allows to enable the NVIDIA runtime and GPU access for containers that profit from it. \u26a0\ufe0f\u26a0\ufe0f\u26a0\ufe0f Warning: this only works if an NVIDIA gpu is installed on the server. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud.\n      # NEXTCLOUD_KEEP_DISABLED_APPS: false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-keep-disabled-apps\n      # SKIP_DOMAIN_VALIDATION: false # This should only be set to true if things are correctly configured. See https:\/\/github.com\/nextcloud\/all-in-one?tab=readme-ov-file#how-to-skip-the-domain-validation\n      # TALK_PORT: 3478 # This allows to adjust the port that the talk container is using which is exposed on the host. See https:\/\/github.com\/nextcloud\/all-in-one#how-to-adjust-the-talk-port\n      # WATCHTOWER_DOCKER_SOCKET_PATH: \/var\/run\/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '\/var\/run\/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '\/var\/run\/docker.sock'\n    # security_opt: &#91;\"label:disable\"] # Is needed when using SELinux\n\n#   # Optional: Caddy reverse proxy. See https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/575\n#   # Alternatively, use Tailscale if you don't have a domain yet. See https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/5439\n#   # Hint: You need to uncomment APACHE_PORT: 11000 above, adjust cloud.example.com to your domain and uncomment the necessary docker volumes at the bottom of this file in order to make it work\n#   # You can find further examples here: https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/588\n#   caddy:\n#     image: caddy:alpine\n#     restart: always\n#     container_name: caddy\n#     volumes:\n#       - caddy_certs:\/certs\n#       - caddy_config:\/config\n#       - caddy_data:\/data\n#       - caddy_sites:\/srv\n#     network_mode: \"host\"\n#     configs:\n#       - source: Caddyfile\n#         target: \/etc\/caddy\/Caddyfile\n# configs:\n#   Caddyfile:\n#     content: |\n#       # Adjust cloud.example.com to your domain below\n#       https:\/\/cloud.example.com:443 {\n#         reverse_proxy localhost:11000\n#       }\n\nvolumes: # If you want to store the data on a different drive, see https:\/\/github.com\/nextcloud\/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive\n  nextcloud_aio_mastercontainer:\n    name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work\n  # caddy_certs:\n  # caddy_config:\n  # caddy_data:\n  # caddy_sites:<\/code><\/pre>\n\n\n\n<p>Sorry it looks so terrible in WordPress. In the editor it should look better; something like this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/NC-seven-1024x522.png\" alt=\"\" class=\"wp-image-445\"\/><\/figure>\n<\/div>\n\n\n<p>Couple of things to talk about in this file.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Always a good idea to check the <a href=\"https:\/\/github.com\/nextcloud\/all-in-one\">original source<\/a> to see if the files been updated. Specifically, <a href=\"https:\/\/github.com\/nextcloud\/all-in-one\/blob\/main\/compose.yaml\">this file here<\/a>.<\/li>\n\n\n\n<li>Comment out the line with port 80. We will be using a reverse proxy.<\/li>\n\n\n\n<li>Comment out the line with port 8443. Again, we will be using the reverse proxy.<\/li>\n\n\n\n<li>In the original file they use Apache_port 11000. That conflicts with Virtualmin&#8217;s email spam filter. So change this port to 11100 and things will work better.<\/li>\n\n\n\n<li>Because we will be using Apache as a reverse proxy, we need to set Apache_IP_binding as shown.<\/li>\n\n\n\n<li>Lastly, I upped the upload limit and the memory limit as shown below.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nC-eight-1024x355.png\" alt=\"\" class=\"wp-image-446\"\/><\/figure>\n<\/div>\n\n\n<p>Everything else is left the same. But feel free to make any changes you deem necessary.<\/p>\n\n\n\n<p>Then, scroll down on the page and click on the Deploy the Stack button.<\/p>\n\n\n\n<p>Once deployed, navigate over to the Containers page which will look like this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/NC-nine-1024x316.png\" alt=\"\" class=\"wp-image-447\"\/><\/figure>\n<\/div>\n\n\n<p>When the orange &#8220;starting&#8221; turns green you will be able to navigate to the IP address of your machine at port 8080.<\/p>\n\n\n\n<p>In our case, were going to use the IP address of the server built at Digital Ocean: <strong>https:\/\/192.241.129.17:8080\/<\/strong><\/p>\n\n\n\n<p>You should get a screen like this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"661\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-10-1024x661.png\" alt=\"\" class=\"wp-image-449\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-10-1024x661.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-10-300x194.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-10-768x496.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-10.png 1117w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Make sure you save that passphrase in a safe place, then click on the open button.<\/p>\n\n\n\n<p>Enter the passphrase and login.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"635\" height=\"737\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-11.png\" alt=\"\" class=\"wp-image-450\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-11.png 635w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-11-258x300.png 258w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/figure>\n<\/div>\n\n\n<p>Here you want to enter the domain \u2013 not the URL \u2013 just the fully qualified domain name that you added to Virtualmin.<\/p>\n\n\n\n<p>Go ahead and click on the Submit Domain button.<\/p>\n\n\n\n<p>If everything goes well, the domain will check out. Meaning that the DNS records are correct and the domain is reachable on port 443.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"648\" height=\"739\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-12.png\" alt=\"\" class=\"wp-image-451\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-12.png 648w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-12-263x300.png 263w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/figure>\n<\/div>\n\n\n<p>On the next screen you can choose optional containers to install, and also change the time zone.<\/p>\n\n\n\n<p>On this installation I&#8217;m electing to go with the default options. So I just click on the Download and start Containers button.<\/p>\n\n\n\n<p>\u2026 This is gonna take a little while. Find yourself a refreshing beverage and relax.<\/p>\n\n\n\n<p>When it&#8217;s all done you will get a screen like this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"655\" height=\"779\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-13.png\" alt=\"\" class=\"wp-image-453\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-13.png 655w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-13-252x300.png 252w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><\/figure>\n<\/div>\n\n\n<p>You&#8217;re going to want to save that password someplace safe.<\/p>\n\n\n\n<p>Go ahead and click on the Open your Nextcloud button to login. The default administrative user is &#8220;admin&#8221; and the password is right there.<\/p>\n\n\n\n<p>You are going to get a couple of splash-screens the first time you login. Once you get past that you will be at the dashboard.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"543\" src=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-14-1024x543.png\" alt=\"\" class=\"wp-image-454\" srcset=\"https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-14-1024x543.png 1024w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-14-300x159.png 300w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-14-768x407.png 768w, https:\/\/jb03.com\/wp-content\/uploads\/2025\/02\/nc-14.png 1315w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Congratulations!<\/p>\n\n\n\n<p>You have installed Nextcloud AIO.<\/p>\n\n\n\n<p>In the next post will walk through setting up daily backups and arranging for backups to be moved off the server and into the cloud.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is going to be the easiest complex thing you have ever done. Nextcloud is kinda &hellip; <a title=\"Installing Nextcloud AIO\" class=\"hm-read-more\" href=\"https:\/\/jb03.com\/index.php\/2025\/02\/11\/installing-nextcloud-aio\/\"><span class=\"screen-reader-text\">Installing Nextcloud AIO<\/span>Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,36,38,39,41],"tags":[],"class_list":["post-612","post","type-post","status-publish","format-standard","hentry","category-docker","category-getting-started","category-nextcloud","category-portainer","category-virtualmin"],"_links":{"self":[{"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/posts\/612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/comments?post=612"}],"version-history":[{"count":1,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/posts\/612\/revisions"}],"predecessor-version":[{"id":635,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/posts\/612\/revisions\/635"}],"wp:attachment":[{"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/media?parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/categories?post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jb03.com\/index.php\/wp-json\/wp\/v2\/tags?post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}