{"id":1432,"date":"2024-01-16T00:36:43","date_gmt":"2024-01-15T23:36:43","guid":{"rendered":"https:\/\/chochol.io\/smart-home\/unifi-controller-in-docker-migrating-to-unifi-network-application\/"},"modified":"2025-08-23T19:53:14","modified_gmt":"2025-08-23T17:53:14","slug":"unifi-controller-in-docker-migrating-to-unifi-network-application","status":"publish","type":"post","link":"https:\/\/chochol.io\/en\/computer-networking\/unifi-controller-in-docker-migrating-to-unifi-network-application\/","title":{"rendered":"UniFi Controller in Docker: Migrating to UniFi Network Application"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1432\" class=\"elementor elementor-1432 elementor-1197\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2033642 e-flex e-con-boxed e-con e-parent\" data-id=\"2033642\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-79b6654 elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"79b6654\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;exclude_headings_by_selector&quot;:[],&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__header\">\r\n\t\t\t\t\t\t<div class=\"elementor-toc__header-title\">\r\n\t\t\t\tTable of contents\t\t\t<\/div>\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--expand\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__79b6654\" aria-expanded=\"true\" aria-label=\"Open table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-down\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"><\/path><\/svg><\/div>\r\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__79b6654\" aria-expanded=\"true\" aria-label=\"Close table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-up\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"><\/path><\/svg><\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<div id=\"elementor-toc__79b6654\" class=\"elementor-toc__body\">\r\n\t\t\t<div class=\"elementor-toc__spinner-container\">\r\n\t\t\t\t<svg class=\"elementor-toc__spinner eicon-animation-spin e-font-icon-svg e-eicon-loading\" aria-hidden=\"true\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z\"><\/path><\/svg>\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-70bc729 elementor-widget elementor-widget-text-editor\" data-id=\"70bc729\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Hello!<\/h2><p>Today I\u2019ll walk you through the steps you need to take to migrate UniFi Controller\u2019s containerized version developed by LinuxServer.io to the new application, UniFi Network Application. Recent changes by Ubiquiti and the <a href=\"https:\/\/info.linuxserver.io\/issues\/2023-09-06-unifi-controller\/\" target=\"_blank\" rel=\"noopener\">decision by LinuxServer.io authors<\/a> to discontinue support of the old container with UniFi Controller, require network administrators to understand and carry out an effective migration. Below I will outline the steps to be taken in this process.<\/p><h2>Introduction to our project<\/h2><p>I will divide the guide into several steps \u2013 from preparing a backup, to creating folders for a new container for Network Application and final launch with Docker Compose. I will be doing the activities on a Synology DS920+, running the containers using the Portainer that I have already installed.<\/p><h3>What is the UniFi Controller?<\/h3><p><img decoding=\"async\" class=\" wp-image-1384 alignleft\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/63b40a92093c6b2f3767e4e6_tMCv8T-y_400x400-300x300.png\" alt=\"Ubiquiti, logo\" width=\"220\" height=\"220\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/63b40a92093c6b2f3767e4e6_tMCv8T-y_400x400-300x300.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/63b40a92093c6b2f3767e4e6_tMCv8T-y_400x400-150x150.png 150w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/63b40a92093c6b2f3767e4e6_tMCv8T-y_400x400-60x60.png 60w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/63b40a92093c6b2f3767e4e6_tMCv8T-y_400x400-360x360.png 360w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/63b40a92093c6b2f3767e4e6_tMCv8T-y_400x400.png 400w\" sizes=\"(max-width: 220px) 100vw, 220px\" \/><strong>Ubiquiti\u2019s<\/strong> <strong>UniFi Controller<\/strong> serves as a central hub for UniFi Series network devices, providing secure communication and management. This controller is responsible for the configuration and ongoing maintenance of connected devices, such as access points. Once a device is added to the controller, a permanent connection is established \u2013 likened to a parent-child relationship, where the controller acts as a \u201cmother\u201d to the \u201cchildren\u201d in the form of network devices. All information about each device is stored in the controller\u2019s local file system.<\/p><p>An interesting aspect is that the <strong>UniFi<\/strong> series devices do not require a continuous controller to function. Once they receive their configuration from the controller, they can operate independently, sending only statistics about their operation to the controller for monitoring and analysis.<\/p><h3>What is the difference between UniFi Controller and UniFi Network Application?<\/h3><p>Nothing, Ubiquiti has decided since Controller 6.2 to use the term <strong>Network Application<\/strong> instead of <strong>Controller<\/strong>.<\/p><h2>Preparation<\/h2><p>In order to prepare the tutorial, we will adopt an established domain name and certain configuration names, shown below. For customized configuration, apply settings according to individual requirements.<\/p><ul><li>Full domain name (FQDN) of Synology DSM: <strong>https:\/\/dsm.xyz.com<\/strong>,<\/li><li>Full Domain Name (FQDN) of UniFi Controller \/ Network Application: <strong>https:\/\/unifi.xyz.com<\/strong>,<\/li><li>Installed on Synology via Docker: <a href=\"https:\/\/docs.portainer.io\/start\/install-ce\/server\/docker\/linux\" target=\"_blank\" rel=\"noopener\">Portainer<\/a><strong>, <\/strong><a href=\"https:\/\/github.com\/AdguardTeam\/AdGuardHome#automated-install-linuxunixmacosfreebsdopenbsd\" target=\"_blank\" rel=\"noopener\">AdGuard Home<\/a><strong>,<\/strong><\/li><li>Installed on Synology via Package Center: <a href=\"https:\/\/www.synology.com\/pl-pl\/dsm\/feature\/container-manager\" target=\"_blank\" rel=\"noopener\">Container Manager<\/a>,<\/li><li>On the router\u2019s DHCP server, the <strong>indicated IP address<\/strong> of the DNS server (AdGuard Home) installed on the Synology,<\/li><li><strong>Existing devices<\/strong> e.g. access points (Access Point), which were managed by UniFi Controller, and you want to transfer them to UniFi Network Application.<\/li><\/ul><h3>Hardware<\/h3><ul><li>1x <a href=\"https:\/\/global.synologydownload.com\/download\/Document\/Hardware\/DataSheet\/DiskStation\/20-year\/DS920+\/plk\/Synology_DS920_Plus_Data_Sheet_plk.pdf\" target=\"_blank\" rel=\"noopener\">Synology DS920+<\/a><\/li><li>1x <a href=\"https:\/\/mikrotik.com\/product\/rb5009upr_s_in\" target=\"_blank\" rel=\"noopener\">Mikrotik RB5009UPr+S+IN<\/a><\/li><li>2x <a href=\"https:\/\/dl.ubnt.com\/datasheets\/unifi\/UniFi_AC_APs_DS.pdf\" target=\"_blank\" rel=\"noopener\">Ubiquiti UniFi UAP-AC-Lite<\/a><\/li><\/ul><h3>Nginx Proxy Manager (optional)<\/h3><p>On my Synology, I set up a reverse proxy using <strong>Nginx Proxy Manager,<\/strong> which allows access to the UniFi dashboard via a URL (<strong>https:\/\/unifi.xyz.com<\/strong>) instead of the standard IP address. It is a solution that increases the convenience of managing UniFi devices by offering an easier to remember and more intuitive address available on the LAN. Are you interested in how to do it? <a href=\"https:\/\/chochol.io\/en\/hardware\/synology-free-ports-80-443-for-nginx-proxy-manager\/\">Take a look here.<\/a><\/p><p>In addition, local DNS redirection is performed by the AdGuard DNS server, also running on a containerized version of the Synology server.<\/p><h3>Software<\/h3><p>Ubiquiti also offers external devices that serve as controllers, such as Cloud Key. However, it is possible to replace them with a solution based on Docker Compose, which is an alternative especially for those who prefer more flexible and integrated IT environments. I will discuss the details of this solution later in the article.<\/p><h4>UniFi Network Application from LinuxServer.io<\/h4><p>Access to the repository of the containerized version of the UniFi Network Application developed by LinuxServer.io is <a href=\"https:\/\/github.com\/linuxserver\/docker-unifi-network-application\" target=\"_blank\" rel=\"noopener\">available here<\/a>. Based on this data, we will create a new Stack in the Portainer.<\/p><h4>Database<\/h4><p><img decoding=\"async\" class=\"wp-image-1389 alignright\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/1doAg1_fMQKWFoub-6gwUiQ-300x300.png\" alt=\"MongoDB, logo\" width=\"220\" height=\"220\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/1doAg1_fMQKWFoub-6gwUiQ-300x300.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/1doAg1_fMQKWFoub-6gwUiQ-150x150.png 150w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/1doAg1_fMQKWFoub-6gwUiQ-60x60.png 60w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/1doAg1_fMQKWFoub-6gwUiQ-360x360.png 360w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/1doAg1_fMQKWFoub-6gwUiQ.png 512w\" sizes=\"(max-width: 220px) 100vw, 220px\" \/><\/p><p>It is worth mentioning that some Synology server models, including the DS920+ model mentioned above, do not support AVX (<a href=\"https:\/\/pl.wikipedia.org\/wiki\/Advanced_Vector_Extensions\" target=\"_blank\" rel=\"noopener\">Advanced Vector Extensions<\/a>) technology. AVX is a set of processor instructions that provide better performance for computationally intensive tasks, such as data processing and graphics operations. For this reason, in this manual we will use <a href=\"https:\/\/www.mongodb.com\/docs\/manual\/release-notes\/4.4\/\" target=\"_blank\" rel=\"noopener\">MongoDB version 4.4<\/a>, which is compatible with devices that do not have AVX support.<\/p><p><strong>MongoDB<\/strong> is a modern, open-source NoSQL database that stores data in a JSON-like format known as BSON. It is a database system with high performance, scalability and flexibility, especially suitable for applications requiring rapid processing of large amounts of complex data.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2014d6d e-flex e-con-boxed e-con e-parent\" data-id=\"2014d6d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ccf6d8a elementor-widget elementor-widget-text-editor\" data-id=\"ccf6d8a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Step 1 \u2013 Configuration in Synology DSM<\/h2><h3>File Station<\/h3><ul><li>Log in to your Synology file server and launch <strong>File Station<\/strong>.<\/li><li>Then, navigate to the previously created shared folder named <strong>docker<\/strong>. Inside this folder, find and open the <strong>unifi<\/strong> folder.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-743ae7d elementor-widget elementor-widget-image\" data-id=\"743ae7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Untitled-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Synology, File Station - UniFi folder\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTM5MiwidXJsIjoiaHR0cHM6XC9cL2Nob2Nob2wuaW9cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzAxXC9VbnRpdGxlZC1zY2FsZWQuanBnIn0%3D\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"514\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Untitled-1024x514.jpg\" class=\"attachment-large size-large wp-image-1392\" alt=\"File Station web UI on Synology showing folders docker and unifi in directory listing.\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Untitled-1024x514.jpg 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Untitled-300x151.jpg 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Untitled-768x385.jpg 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Untitled-1536x771.jpg 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Untitled-2048x1027.jpg 2048w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Untitled-875x440.jpg 875w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d26795f elementor-widget elementor-widget-text-editor\" data-id=\"d26795f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>The next step is to create a subfolder named <strong>network-application<\/strong> inside the <strong>unifi<\/strong> folder.\n<ul>\n<li>After a successful migration and installation of the new U<strong>nifi Network Application<\/strong>, the old folder containing the previous controller will be able to be deleted. This will clean up the space and arrange the folder structure according to the current configuration.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e11977a elementor-widget elementor-widget-image\" data-id=\"e11977a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.33.35.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"File Station, UniFi Network Application folders\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTM5NywidXJsIjoiaHR0cHM6XC9cL2Nob2Nob2wuaW9cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzAxXC9TY3JlZW5zaG90LTIwMjQtMDEtMTMtYXQtMTUuMzMuMzUucG5nIn0%3D\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"372\" height=\"344\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.33.35.png\" class=\"attachment-large size-large wp-image-1397\" alt=\"Lista aplikacji w panelu ustawie\u0144, z pozycjami controller, network-application, poler-chronograf i poler-influxdb\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.33.35.png 372w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.33.35-300x277.png 300w\" sizes=\"(max-width: 372px) 100vw, 372px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32d3368 elementor-widget elementor-widget-text-editor\" data-id=\"32d3368\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>In this article, we will not discuss additional folders related to UniFi Poller, which are part of my configuration. <a href=\"https:\/\/unpoller.com\" target=\"_blank\" rel=\"noopener\">UniFi Poller<\/a> are containers used to collect telemetry data from the UniFi controller, which can then be visualized in Grafana. We will focus on other aspects of UniFi controller configuration and migration.<\/li>\n<\/ul>\n<\/li>\n<li>Inside the <strong>network-application<\/strong> folder, create two subfolders: <strong>config<\/strong> and <strong>mongodb<\/strong>. The config subfolder will be used to store configuration files, while mongodb will be for managing database data.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d3dec6 elementor-widget elementor-widget-image\" data-id=\"5d3dec6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-15-at-23.19.09.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"File Station, UniFi Network Application Folders config and mongodb\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTM5OSwidXJsIjoiaHR0cHM6XC9cL2Nob2Nob2wuaW9cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzAxXC9TY3JlZW5zaG90LTIwMjQtMDEtMTUtYXQtMjMuMTkuMDkucG5nIn0%3D\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"515\" height=\"194\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-15-at-23.19.09.png\" class=\"attachment-large size-large wp-image-1399\" alt=\"Browser UI showing docker run instructions for network-application and folders config and mongodb\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-15-at-23.19.09.png 515w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-15-at-23.19.09-300x113.png 300w\" sizes=\"(max-width: 515px) 100vw, 515px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-633cd51 elementor-widget elementor-widget-text-editor\" data-id=\"633cd51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Step 2 \u2013 Create a script to create a database<\/h2><ul><li>Return to the <strong>network-application<\/strong> folder, then open the <strong>mongodb<\/strong> folder. Here, create a file named <strong>init-mongo.js<\/strong>. Then, paste the contents of the code below into this file. This file will be used to initialize and configure the MongoDB database for Unifi Network Application. Make sure the code meets the specifications needed for your configuration \u2013 most importantly, change the default password.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a04dcda elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"a04dcda\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-a04dcda\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-php line-numbers copy-to-clipboard\"data-previewers=\"\"><code>db.getSiblingDB(&quot;unifi&quot;).createUser({user: &quot;unifi&quot;, pwd: &quot;unifi&quot;, roles: [{role: &quot;readWrite&quot;, db: &quot;unifi&quot;}]});\ndb.getSiblingDB(&quot;unifi_stat&quot;).createUser({user: &quot;unifi&quot;, pwd: &quot;unifi&quot;, roles: [{role: &quot;readWrite&quot;, db: &quot;unifi_stat&quot;}]});<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_a04dcda = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_a04dcda();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_a04dcda );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2d159ef elementor-widget elementor-widget-text-editor\" data-id=\"2d159ef\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Step 3 \u2013 Download the backup from UniFi Controller<\/h2><p>To move existing Site configurations from the current controller to the new Network Application repository, an important step is to download a backup of existing devices and configurations. This will allow easy transfer of all settings and registered devices to the new environment, eliminating the need to re-register and configure each device from scratch. This will facilitate the migration process, preserving all relevant settings and data.<\/p><ul><li>To start the migration process, <strong>log in<\/strong> to the admin panel of your current controller.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef0f3ac elementor-widget elementor-widget-image\" data-id=\"ef0f3ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/elementor\/thumbs\/Untitled2-qid89y0zzqxo8kf86zyo8zz9o7br26psym98n7khoi.jpg\" title=\"UniFi, login screen\" alt=\"UniFi sign-in screen with username and password fields, Remember me checkbox, and blue Sign in button\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39d04ba elementor-widget elementor-widget-text-editor\" data-id=\"39d04ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>In the Controller admin panel, find and select the cogwheel icon that represents <strong>Settings<\/strong>. This option is located in the menu on the left side of the screen and provides access to various system configurations and settings.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e37eef elementor-widget elementor-widget-image\" data-id=\"2e37eef\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"280\" height=\"252\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.27.25.png\" class=\"attachment-medium size-medium wp-image-1403\" alt=\"Network 8.0.24 Settings panel UI with gear icon and menu list on dark background\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-782b915 elementor-widget elementor-widget-text-editor\" data-id=\"782b915\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>After selecting the settings, go to the <strong>System tab<\/strong>. This part of the user interface contains important system management functions.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0938abb elementor-widget elementor-widget-image\" data-id=\"0938abb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"243\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.27.35-300x243.png\" class=\"attachment-medium size-medium wp-image-1405\" alt=\"Dark UI screen showing Profiles > System, with Network 8.0.24 and a View Release Notes link\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.27.35-300x243.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.27.35.png 440w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7144094 elementor-widget elementor-widget-text-editor\" data-id=\"7144094\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>In the next step, under the <strong>System tab<\/strong>, go to the <strong>Backups<\/strong> section, which is located in the menu at the top of the page. This section allows you to manage system backups, which is essential to protect your data and settings before migrating to a new UniFi Network Application environment.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bae8e24 elementor-widget elementor-widget-image\" data-id=\"bae8e24\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"49\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.28.00-768x49.png\" class=\"attachment-medium_large size-medium_large wp-image-1407\" alt=\"Admin console header with tabs General, Updates, Backups, Administration, Advanced; Backups selected\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.28.00-768x49.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.28.00-300x19.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.28.00-1024x66.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.28.00-1536x98.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.28.00.png 1622w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c80def1 elementor-widget elementor-widget-text-editor\" data-id=\"c80def1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Click the <strong>Download<\/strong> button in the <strong>Backups<\/strong> section to download the latest backup created by your current UniFi controller.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64a12a9 elementor-widget elementor-widget-image\" data-id=\"64a12a9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/elementor\/thumbs\/Screenshot-2024-01-13-at-15.28.19-qid8pehgdo3f5pyxxoht93k5cb51n02wf4gor0ng00.png\" title=\"UniFi Controller, List of backups\" alt=\"Download Backup UI showing Settings Only dropdown and table of available backup versions with Created dates, sizes, and Download\/Restore actions\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b369dc1 elementor-widget elementor-widget-text-editor\" data-id=\"b369dc1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>After clicking, wait a while for the system to prepare and download the backup file. This file will contain all the necessary data and settings that are required for subsequent migration to the new UniFi Network Application environment.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8afc5f5 elementor-widget elementor-widget-text-editor\" data-id=\"8afc5f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Step 4 \u2013 Update Stack Docker Compose in the Portainer<\/h2><p>This step involves logging into the Portainer and modifying the existing stack (Stack) by entering new Docker Compose code. In this new Docker Compose configuration, you will include separate services for the MongoDB database and for the Unifi Network Application. This way you integrate both the database and the application into a single container solution.<\/p><ul><li>Log in to your account and go to the administrative interface of the Portainer.<ul><li>If you use the Authentik single sign-on system, you can make the login process easier by integrating Portainer with Authentik. For integration instructions, see the <a href=\"https:\/\/chochol.io\/en\/software\/authentik-single-sign-on-configuration-for-portainer\/\">dedicated guide<\/a>.<\/li><\/ul><\/li><li>Select your environment (eng: <strong>Environments<\/strong>) in which you will edit the configuration of the created <strong>Docker Compose<\/strong>. Then go to <strong>Stacks<\/strong> and select the created Stack named <strong>unifi<\/strong>.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e4860e elementor-widget elementor-widget-image\" data-id=\"2e4860e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"67\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.32.33-768x67.png\" class=\"attachment-medium_large size-medium_large wp-image-1414\" alt=\"Unifi Compose header with Total at right, dark UI bar with unifi logo and left toggle switch\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.32.33-768x67.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.32.33-300x26.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.32.33-1024x89.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-13-at-15.32.33.png 1078w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f8ae744 elementor-widget elementor-widget-text-editor\" data-id=\"f8ae744\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>At the top under <strong>Stack details<\/strong>, go to <strong>Editor<\/strong>.<\/li>\n<li>Replace the previous contents of Docker Compose referring to the UniFi Controller repository with the new code shown below:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c444598 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"c444598\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-c444598\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-yaml line-numbers copy-to-clipboard\"data-previewers=\"\"><code>---\nversion: &quot;3.9&quot;\n\nservices:\n  unifi_net_app_db:\n    image: mongo:4.4\n    container_name: unifi_network_application-db\n    hostname: unifi-net-app-db\n    mem_limit: 2g\n    cpu_shares: 768\n    healthcheck:\n      test: [&quot;CMD&quot;, &quot;mongo&quot;, &quot;--eval&quot;, &quot;db.adminCommand(&#039;ping&#039;)&quot;]\n      interval: 10s\n      timeout: 10s\n      retries: 5\n      start_period: 20s\n    networks:\n      - unifi_network\n    volumes:\n      - \/volume1\/docker\/unifi\/network-application\/mongodb\/init-mongo.js:\/docker-entrypoint-initdb.d\/init-mongo.js:ro\n      - \/volume1\/docker\/unifi\/network-application\/mongodb:\/var\/lib\/mongo:rw\n      - \/volume1\/docker\/unifi\/network-application\/mongodb:\/data\/configdb:rw\n      - \/volume1\/docker\/unifi\/network-application\/mongodb:\/data\/db:rw\n    restart: unless-stopped\n\n  unifi_net_app_server: \n    image: linuxserver\/unifi-network-application:8.0.26\n    container_name: unifi_network_application-server\n    hostname: unifi-net-app-server\n    environment:\n      - PUID=1026\n      - PGID=100\n      - TZ=Europe\/Warsaw\n      - MONGO_HOST=unifi-net-app-db\n      - MONGO_USER=unifi\n      - MONGO_PASS=unifi\n      - MONGO_PORT=27017 \n      - MONGO_DBNAME=unifi\n      - MEM_LIMIT=1024\n      - MEM_STARTUP=1024\n      - MONGO_TLS=false\n    volumes:\n      - \/volume1\/docker\/unifi\/network-application\/config:\/config\n    ports:\n      - 8443:8443 \n      - 3478:3478\/udp \n      - 10001:10001\/udp \n      - 8080:8080 \n     # - 1900:1900\/udp #optional\n      - 8843:8843 #optional \n      - 8880:8880 #optional\n      - 6789:6789 #optional  \n     # - 5514:5514\/udp #optional\n    restart: unless-stopped \n    networks:\n      - unifi_network\n    depends_on:\n      - unifi_net_app_db  \n\nnetworks:\n  unifi_network:\n    name: unifi_network\n    ipam:\n      config:\n        - subnet: 192.168.200.0\/24 <\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_c444598 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_c444598();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_c444598 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b011d8f elementor-widget elementor-widget-text-editor\" data-id=\"b011d8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3><strong>Parameters<\/strong><\/h3><p>At startup, we can specify parameters that configure containers (such as those included above). These parameters are separated by a colon and indicate <strong><external>:<internal><\/strong>. For example, <strong>-p 8080:80<\/strong> will make port <strong>80<\/strong> <strong>inside<\/strong> the container accessible from <strong>outside the container<\/strong>, from the host IP, on port <strong>8080<\/strong>.<\/p><h4>Time Zone<\/h4><ul><li>After pasting the code in the editor, <strong>change the value for the time zone<\/strong> (TZ) by selecting the appropriate time zone <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_tz_database_time_zones\" target=\"_blank\" rel=\"noopener\">from this list<\/a>.<\/li><\/ul><h4>PUID i PGID<\/h4><p>When you use volumes (<strong>-v<\/strong> parameter), there may be permission issues between the host OS and the container. To get around these problems, we give you the option to select a <strong>user identifier (PUID)<\/strong> and a <strong>user group (PGID).<\/strong><\/p><ul><li style=\"list-style-type: none;\"><ul><li>Before pasting the above code into the editor area, c<strong>hange the number values for PUID and PGID<\/strong> to your own PUID and PGID values. The PUID and PGID values refer to a particular account existing on Synology. You need to enter your own values.<\/li><li>To check your PUID and PGID values on Linux, you can use a terminal. Enter the command <strong>id username<\/strong> (<em>replacing username with your own username on the computer<\/em>). The result of this command will show your PUID (UID) and PGID (GID). These values are essential to properly configure Docker containers, as they allow you to match the permissions of files and directories in the container to your system.<\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9b376d elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"a9b376d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-a9b376d\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash command-line\"data-previewers=\"\"data-user=\"jkowalski\"data-host=\"dsm01\"data-output=\"\"><code>id jkowalski\nuid=1026(jkowalski) gid=100(users) groups=100(users),101(administrators)<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_a9b376d = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_a9b376d();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_a9b376d );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b007fd7 elementor-widget elementor-widget-text-editor\" data-id=\"b007fd7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Step 5 \u2013 Run Network Application and upload a backup of the controller<\/h2><p>The last step is to run Network Application with MongoDB and import the previously downloaded backup from the previous controller.<\/p><p>Once the new Unifi Network Application environment is up and running, you will be able to upload saved settings and configurations so that all devices and network settings are restored on the new system without the need for manual reconfiguration. This will facilitate rapid adaptation to the new environment and ensure continuity of network operations.<\/p><h3>Log in<\/h3><ul><li><strong>Log in<\/strong> using the address <strong>https:\/\/unifi.xyz.com<\/strong>.Nale\u017cy Note that the initial startup and configuration of the database may take some time.<\/li><li>Once launched, let\u2019s start by selecting the option to restore the configuration from the previous controller by clicking on <strong>Restore Server from a Backup<\/strong> at the bottom of the screen,<\/li><li>Then <strong>select the backup file<\/strong> and confirm you want to upload it. The restoration process may take some time.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-65a23f7 elementor-widget elementor-widget-image\" data-id=\"65a23f7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"331\" height=\"152\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-16-at-00.25.43.png\" class=\"attachment-medium_large size-medium_large wp-image-1419\" alt=\"Restore from backup dialog asking confirmation to restore network_backup_07.01.2024_00-00_v8.0.24.0.afun\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-16-at-00.25.43.png 331w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-16-at-00.25.43-300x138.png 300w\" sizes=\"(max-width: 331px) 100vw, 331px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2a68cd5 elementor-widget elementor-widget-text-editor\" data-id=\"2a68cd5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>Once this process is complete, your devices should already be properly integrated into the new Network Application environment.<\/li><li><strong>Done! \ud83d\ude80<\/strong><\/li><\/ul><h2><strong>Additional sources and information<\/strong><\/h2><ul><li>Controller vs Network Application: <a href=\"https:\/\/www.reddit.com\/r\/Ubiquiti\/comments\/ngjjf1\/controller_vs_network_application\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.reddit.com\/r\/Ubiquiti\/comments\/ngjjf1\/controller_vs_network_application\/<\/a><\/li><\/ul><h2>Read also<\/h2><ul><li><a href=\"https:\/\/chochol.io\/software\/tvheadend-przewodnik-instalacji-na-synology-w-docker-compose\/\">TVHeadend: Guide to installing on Synology in Docker Compose<\/a> \/ How to install TVHeadend on Synology with Docker Compose. A practical step-by-step guide for advanced users.<\/li><li><a href=\"https:\/\/chochol.io\/en\/computer-networking\/how-to-make-an-internet-speed-test-on-a-raspberry-pi\/\">How to do an internet speed test on Raspberry Pi<\/a> \/ Check the internet speed on Raspberry Pi with speedtest-cli. Discover how to set up and use the speed tool.<\/li><li><a href=\"https:\/\/chochol.io\/en\/hardware\/ads-b-receiver-installation-and-configuration-on-raspberry-pi\/\">ADS-B: Receiver Installation and Configuration on Raspberry Pi<\/a> \/ Discover the secrets of installing and configuring your own ADS-B antenna on Raspberry Pi. Develop skills and track aircraft in real time.<\/li><li><a href=\"https:\/\/chochol.io\/en\/software\/traccar-docker-installation-guide-on-synology\/\">Traccar: A guide to installing on Synology with Docker<\/a> \/ Step-by-step guide: Installing Traccar on Synology using Docker. Effective vehicle tracking on your own server.<\/li><li><a href=\"https:\/\/chochol.io\/en\/software\/traccar-configuring-gps-communication-in-docker\/\">Traccar: Configuring GPS communication in Docker<\/a> \/ Step by step how to enable Traccar GPS communication. Using Docker Compose, open ports for managing and receiving GPS data.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>UniFi Controller: Discover step-by-step how to successfully migrate to Network Application using Docker Compose.<\/p>\n","protected":false},"author":1,"featured_media":1367,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[95],"tags":[102,103,113,121],"class_list":["post-1432","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computer-networking","tag-docker","tag-docker-compose","tag-portainer","tag-synology"],"_links":{"self":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts\/1432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/comments?post=1432"}],"version-history":[{"count":0,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts\/1432\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/media\/1367"}],"wp:attachment":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/media?parent=1432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/categories?post=1432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/tags?post=1432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}