Trouble with MC v2 install on RPi 4
-
I am getting stuck in the final steps of installing MC server V2 on my RPi 4. After I have docker, influxdb, MQTT all instlalled and running on the Pi I can see they are running in my docker by running the following command "docker ps".
I then attempt to install the MyController server, but it doesnt work. Near the end of the instructions I wrote and copied below, I am not able to start the MC server after editing the yaml file in nano. Any help would be greatly appreciated.
Install Raspberry Pi OS 64-bit
Start and setup with necessary updates
Open Terminal and Web Browser
In Web BRowser, go to www.mycontroller.org, www.forum.mycontroller.org, and https://get.docker.com
In www.mycontroller.org, click on "Documentation" and navigate to "Install Docker"
In terminal activate root user by typing
sudo su
Install Docker
Begin installation of Docker by typing the following commands one at a time with enter after each
'curl -fsSL https://get.docker.com -o install-docker.sh
cat install-docker.sh
sh install-docker.sh --dry-run
sh install-docker.sh'
(this one may take a few minutes, wait for "root@raspberrypi:/# to reappear)
usermod -aG docker admin
(if your non root user is "admin")
systemctl enable docker.service
systemctl start docker.service
systemctl is-active docker.service
(should return "active")Make MC Portable
So that you are able to move your server from location to location, you will need to setup a Docker network to manage the changing IP addresses
Enter the following in terminal:
docker network create mycontroller
Install InfluxDB
Follow the instructions under "Install InfluxDB" for installation within Docker at www.mycontroller.org
Enter the following text commands in terminal with enter after each.
1.(this one may take a few minutes, wait for "root@raspberrypi:/# to reappear)
mkdir -p /opt/apps/influxdb
cd /opt/apps/influxdb
docker run --rm influxdb:1.8.4 influxd config > influxdb.conf
Open File Manager and navigate to /opt/apps/influxdb/influxdb.conf, double click to open and verify that it has roughly 150 lines of text in it.
In Terminal type
nano /opt/apps/influxdb/influxdb.conf
(this should open the same file in terminal and allow you to edit it)
Using the up and down arrows, scroll down to the line that reads "[monitor]" and change the following from
store-enabled = true
to
store-enabled = false
press control-O followed by enter to save
press control-X to exit the nano editorEnter the following into terminal
1. (to return to the highest level of the file directory)
cd /
2. (this one may take a few minutes, wait for "root@raspberrypi:/# to reappear)
mkdir -p /opt/apps/influxdb/influxdb_data cd /opt/apps/influxdb
docker run --detach --name mc_influxdb \
--network mycontroller \
--publish 8086:8086 \
--volume $PWD/influxdb_data:/var/lib/influxdb \
--volume $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
--env TZ="Asia/Kolkata" \
--restart unless-stopped \
influxdb:1.8.4]
Verify that the influxdb container is running in docker with the following code in terminal
docker ps
(this should show a list of running containers, only influxdb should appear right now)To see the Docker logs type in the following
docker logs mc_influxdb
To stop the influxdb in docker typle
docker stop mc_influxdb
To restart the influxdb in docker type
docker restart mc_influxdb
To uninstall influxdb in docker type
docker stop mc_influxdb
docker rm mc_influxdb
Install natsio
At www.mycontroller.org go to "Install natsio" and follow the directions as follows
Type the following into Terminal
cd /
(the following will cause the Pi to download a few different things and install them, it can take a few minutes)
docker run --detach --name mc_natsio \
--network mycontroller \
--publish 4222:4222 \
--env TZ="Asia/Kolkata" \
--restart unless-stopped \
nats:2.2.2-alpine
Verify that the natsio container is running in docker with the following code in terminal
docker ps
(this should show a list of running containers, only influxdb and natsio should appear right now)To see docker logs type the following
docker logs mc_natsio
To stop natsio type
docker stop mc_natsio
To restart natsio type
docker restart mc_natsio
To uninstall natsio typeInstall MQTT Broker in Docker
at www.mycontroller.org navigate to "Install Mosquitto MQTT Broker" and follow the instructions as follows
In terminal type the following commands to install the broker in docker
# create mosquitto.conf
mkdir -p /opt/apps/mosquitto
cd /opt/apps/mosquitto
cat << EOF > mosquitto.conf
allow_anonymous true
persistence false
persistence_location /mosquitto/data/
EOF
(With the following, Pi will download some files which could take a little while)
mkdir -p /opt/apps/mosquitto
cd /opt/apps/mosquitto
docker run -d --name mc_mosquitto \
--network mycontroller \
--publish 1883:1883 \
--publish 9001:9001 \
--volume $PWD/mosquitto.conf:/mosquitto/config/mosquitto.conf \
--restart unless-stopped \
eclipse-mosquitto:1.6.9
Verify that the MQTT container is running in docker with the following code in terminal
docker ps
(this should show a list of running containers, influxdb, natsio, and MQTT should appear)To see docker logs type the followings
docker logs mc_mosquitto
To stop MQTT broker type
docker stop mc_mosquitto
To restart MQTT broker type
docker restart mc_mosquitto
To uninstall MQTT broker type
docker stop mc_mosquitto
docker rm mc_mosquitto
Installing MyController Server v2.0
AT www.mycontroller.org, navigate to "Install with container image" and follow the directions as follows
Return to the root directory by typing
cd /
into terminal
In terminal type the following commands to install MC v2
mkdir -p /opt/apps/mycontroller/mc_home
mkdir -p /opt/apps/mycontroller/mc_home/secure_share
mkdir -p /opt/apps/mycontroller/mc_home/insecure_share
Change your dirrectory and get the defaul yaml file
cd /opt/apps/mycontroller
curl https://raw.githubusercontent.com/mycontroller-org/backend/v2.0.0/resources/sample-docker-server.yaml \
--output mycontroller.yaml
Open the yaml file to edit in nano
nano /opt/apps/mycontroller/mycontroller.yaml
Like earlier, the nano command is a terminal-based text editor and you will see a file with many lines of text open in terminal.
At the top you should see a line that reads something like
"secret: 5a2f6ff25b0025aeae12ae096363b51a # !!! WARNING: CHANGE THIS SECRET !!!"
The alpha-numeric secret must be changed to anything with 1 to 32 characters, but remember what you pick.Change the yaml file so the database for influxdb points to your machine's IP address as follows:
bus: type: embedded topic_prefix: mc_server server_url: nats://mc_natsio:4222 insecure: false connection_timeout: 10s metric: disabled: false type: influxdb uri: http://mc_influxdb:8086 token: username: password: organization_name: bucket_name: mycontroller batch_size: flush_interval: 5s query_client_version:
click control-o to save followed by enter
click control-x to exit nanoThis is where I get hung up, but I'm not sure if I have settings above here incorrect or if there is something wrong with the following install/run commands.
Start your MyController Server by entering the following text into terminal:
docker run --detach --name mycontroller \ --network mycontroller \ --publish 8080:8080 \ --publish 8443:8443 \ --publish 9443:9443 \ --volume $PWD/mc_home:/mc_home \ --volume $PWD/mycontroller.yaml:/app/mycontroller.yaml \ --env TZ="Asia/Kolkata" \ --restart unless-stopped \ docker.io/mycontroller/server:2.0.0
In your web browser, check to make sure your server is running by going to http://localhost:8080 (or http://<your_ip>:8080)
This should bring up a MyController login screen where your username AND password are both set to "admin"
Login to verify that it is working.On system restart, resume docker containers with the following commands in terminal
docker restart mc_influxdb
docker restart mc_natsio
docker restart mc_mosquitto
docker restart
-
Here is a screenshot of the docker system running with influxdb, natsio, and mqtt. Maybe something is wrong here? This was taken immediately after a system restart without running and apps or commands prior.
-
@wint0178 What is the log do you see on the
mycontroller
container?docker logs mycontroller
and what is the output of,
docker ps -a
This is where I get hung up, but I'm not sure if I have settings above here incorrect or if there is something wrong with the following install/run commands.
Can you please elaborate? Does the terminal hung to return?
-
@jkandasa the response to
docker logs mycontroller
isError response from daemon: No such container: mycontroller
and the response to
docker ps -a
is:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8db9b7cb067c eclipse-mosquitto:1.6.9 "/docker-entrypoint.…" 5 days ago Up 5 days 0.0.0.0:1883->1883/tcp, :::1883->1883/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp mc_mosquitto 44cb484f6753 nats:2.2.2-alpine "docker-entrypoint.s…" 5 days ago Up 5 days 6222/tcp, 0.0.0.0:4222->4222/tcp, :::4222->4222/tcp, 8222/tcp mc_natsio 5c81d7e95d1a influxdb:1.8.4 "/entrypoint.sh infl…" 5 days ago Up 5 days 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp mc_influxdb
-
@jkandasa I also checked the docker version as you asked and it is Docker version 26.0.2, build 3c863ff.
You asked about my timezone, I am in US Central timezone, the same as Chicago.
I assume if I uninstall docker to try and update it using the code you include in the documentation, as you suggested, that I will also need to reinstall influxdb, natsio, and mqtt. Is that correct?
Finally, I am not familiar with vim, but I just installed it and will check it out. I'll keep you posted. Thank you for your help!
-
@jkandasa I opened the /opt/apps/mycontroller/mycontroller.yaml in vim and found it to reflect the changes that I had made in nano, so I made no other changes.
-
@jkandasa I was just messing with your install from executable binary instructions and I got the MC server running and can pull it up at localhost:8080. When I run
docker ps -a
I am still getting the same three services running: mqtt, influxdb, and natsio. Is this correct? -
@jkandasa the running server on localhost has a warning that the Metrics database is disabled. I assume this has to do with installing MC from the binary, but it feels like progress anyway.
-
@wint0178 Thanks for the details
I see you have an trailing space after\
("--env TZ="Asia/Kolkata" \ "
), that leadsrestart
command not found
I have updated your timezone and removed the extra space, can you please try the following command to start the MyController server?go to your mycontroller directory(root of
mc_home
and location ofmycontroller.yaml
) and run the following commanddocker run --detach --name mycontroller \ --network mycontroller \ --publish 8080:8080 \ --publish 8443:8443 \ --publish 9443:9443 \ --volume $PWD/mc_home:/mc_home \ --volume $PWD/mycontroller.yaml:/app/mycontroller.yaml \ --env TZ="America/Chicago" \ --restart unless-stopped \ docker.io/mycontroller/server:2.0.0
If it doesn't comes up please run the following command, I just removed the
--detach
(don't run on background) and added--rm
(remove the container on termination)docker run --rm --name mycontroller \ --network mycontroller \ --publish 8080:8080 \ --publish 8443:8443 \ --publish 9443:9443 \ --volume $PWD/mc_home:/mc_home \ --volume $PWD/mycontroller.yaml:/app/mycontroller.yaml \ --env TZ="America/Chicago" \ --restart unless-stopped \ docker.io/mycontroller/server:2.0.0
I assume if I uninstall docker to try and update it using the code you include in the documentation, as you suggested, that I will also need to reinstall influxdb, natsio, and mqtt. Is that correct?
Yes, In the docker just removes the containers and creates from fresh.
I was just messing with your install from executable binary instructions and I got the MC server running and can pull it up at localhost:8080. When I run docker ps -a I am still getting the same three services running: mqtt, influxdb, and natsio. Is this correct?
executable is different than the docker. It will not be come under
docker ps
command.
It executes directly on the host system.
I would recommend to use docker version of mycontroller, for the portability and maintainabilitythe running server on localhost has a warning that the Metrics database is disabled. I assume this has to do with installing MC from the binary, but it feels like progress anyway.
This is because, executable which is running on outside of docker network and can not resolve the hostname used inside docker. If you replace hostname of
mc_natsio
,mc_influxdb
tolocalhost
on yourmycontroller.yaml
[1] should work. However, I would recommend to try the docker version of mycontroller.[1] - If you apply this change, it will not work on docker version of mycontroller
-
@jkandasa said in Trouble with MC v2 install on RPi 4:
@wint0178 Thanks for the details
I see you have an trailing space after \ ("--env TZ="Asia/Kolkata" \ "), that leads restart command not found
I have updated your timezone and removed the extra space, can you please try the following command to start the MyController server?Thank you so much! It looks like that single space was the issue, I had hoped it was something that simple and silly, but my knowledge is very limited and I don't think I would have figured that out. thanks again! I'll copy the full install instructions I wrote, the the changes you suggested, in a reply below.
-
@jkandasa Here is the full set of my instructions that just worked.
Install Raspberry Pi OS 64-bit
Start and setup with necessary updates
Open Terminal and Web Browser
In Web BRowser, go to www.mycontroller.org, www.forum.mycontroller.org, and https://get.docker.com
In www.mycontroller.org, click on "Documentation" and navigate to "Install Docker"
In terminal activate root user by typing
sudo su
Install Docker
Begin installation of Docker by typing the following commands one at a time with enter after each
curl -fsSL https://get.docker.com -o install-docker.sh
cat install-docker.sh
sh install-docker.sh --dry-run
sh install-docker.sh
(this one may take a few minutes, wait for "root@raspberrypi:/# to reappear)
(change "admin" below if your root user name is different)
usermod -aG docker admin
systemctl enable docker.service
systemctl start docker.service
systemctl is-active docker.service
(should return "active")Make MC Portable
So that you are able to move your server from location to location, you will need to setup a Docker network to manage the changing IP addresses
Enter the following in terminal:
docker network create mycontroller
Install InfluxDB
Follow the instructions under "Install InfluxDB" for installation within Docker at www.mycontroller.org
Enter the following text commands in terminal with enter after each.(this one may take a few minutes, wait for "root@raspberrypi:/# to reappear)
mkdir -p /opt/apps/influxdb
cd /opt/apps/influxdb
docker run --rm influxdb:1.8.4 influxd config > influxdb.conf
Open File Manager and navigate to /opt/apps/influxdb/influxdb.conf, double click to open and verify that it has roughly 150 lines of text in it.
In Terminal type
nano /opt/apps/influxdb/influxdb.conf
(this should open the same file in terminal and allow you to edit it)Using the up and down arrows, scroll down to the line that reads "[monitor]" and change the following from
store-enabled = true
to
store-enabled = false
press control-O followed by enter to save
press control-X to exit the nano editorEnter the following into terminal
(to return to the highest level of the file directory)
cd /
(this one may take a few minutes, wait for "root@raspberrypi:/# to reappear)
mkdir -p /opt/apps/influxdb/influxdb_data
cd /opt/apps/influxdb
docker run --detach --name mc_influxdb \
--network mycontroller \
--publish 8086:8086 \
--volume $PWD/influxdb_data:/var/lib/influxdb \
--volume $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
--env TZ="America/Chicago" \
--restart unless-stopped \
influxdb:1.8.4
Verify that the influxdb container is running in docker with the following code in terminal
docker ps
(this should show a list of running containers, only influxdb should appear right now)(For future reference)
To see the Docker logs type in the following
docker logs mc_influxdb
To stop the influxdb in docker typle
docker stop mc_influxdb
To restart the influxdb in docker type
docker restart mc_influxdb
To uninstall influxdb in docker type
docker stop mc_influxdb
docker rm mc_influxdb
Install natsio
At www.mycontroller.org go to "Install natsio" and follow the directions as follows
Type the following into Terminal
cd /
The following will cause the Pi to download a few different things and install them, it can take a few minutes.
docker run --detach --name mc_natsio \
--network mycontroller \
--publish 4222:4222 \
--env TZ="America/Chicago" \
--restart unless-stopped \
nats:2.2.2-alpine
Verify that the natsio container is running in docker with the following code in terminal
docker ps
(this should show a list of running containers, only influxdb and natsio should appear right now)(For future reference)
To see docker logs type the following
docker logs mc_natsio
To stop natsio type
docker stop mc_natsio
To restart natsio type
docker restart mc_natsio
To uninstall natsio type
docker stop mc_natsio
docker rm mc_natsio
Install MQTT Broker in Docker
at www.mycontroller.org navigate to "Install Mosquitto MQTT Broker" and follow the instructions as followsIn terminal type the following commands to install the broker in docker
# create mosquitto.conf
mkdir -p /opt/apps/mosquitto
cd /opt/apps/mosquitto
cat << EOF > mosquitto.conf
allow_anonymous true
persistence false
persistence_location /mosquitto/data/
EOF
With the following, Pi will download some files which could take a little while.
mkdir -p /opt/apps/mosquitto
cd /opt/apps/mosquitto
docker run -d --name mc_mosquitto \
--network mycontroller \
--publish 1883:1883 \
--publish 9001:9001 \
--volume $PWD/mosquitto.conf:/mosquitto/config/mosquitto.conf \
--restart unless-stopped \
eclipse-mosquitto:1.6.9
Verify that the MQTT container is running in docker with the following code in terminal
docker ps
(this should show a list of running containers, influxdb, natsio, and MQTT should appear)(For future reference)
To see docker logs type the followings
docker logs mc_mosquitto
To stop MQTT broker type
docker stop mc_mosquitto
To restart MQTT broker type
docker restart mc_mosquitto
To uninstall MQTT broker type
docker stop mc_mosquitto
docker rm mc_mosquitto
Installing MyController Server v2.0
AT www.mycontroller.org, navigate to "Install with container image" and follow the directions as follows
Return to the root directory by typing
cd /
into terminalIn terminal type the following commands to install MC v2
mkdir -p /opt/apps/mycontroller/mc_home
mkdir -p /opt/apps/mycontroller/mc_home/secure_share
mkdir -p /opt/apps/mycontroller/mc_home/insecure_share
Change your dirrectory and get the defaul yaml file
cd /opt/apps/mycontroller
curl https://raw.githubusercontent.com/mycontroller-org/backend/v2.0.0/resources/sample-docker-server.yaml \
--output mycontroller.yaml
Open the yaml file to edit in nano
nano /opt/apps/mycontroller/mycontroller.yaml
Like earlier, the nano command is a terminal-based text editor and you will see a file with many lines of text open in terminal.
At the top you should see a line that reads something like
"secret: 5a2f6ff25b0025aeae12ae096363b51a # !!! WARNING: CHANGE THIS SECRET !!!"
The alpha-numeric secret must be changed to anything with 1 to 32 characters, but remember what you pick.Change the yaml file so the database for influxdb points to your machine's IP address as follows:
bus:
type: embedded
topic_prefix: mc_server
server_url: nats://mc_natsio:4222
insecure: false
connection_timeout: 10smetric:
disabled: false
type: influxdb
uri: http://mc_influxdb:8086
token:
username:
password:
organization_name:
bucket_name: mycontroller
batch_size:
flush_interval: 5s
query_client_version:click control-O to save followed by enter
click control-X to exit nanoStart your MyController Server by entering the following text into terminal:
docker run --detach --name mycontroller \
--network mycontroller \
--publish 8080:8080 \
--publish 8443:8443 \
--publish 9443:9443 \
--volume $PWD/mc_home:/mc_home \
--volume $PWD/mycontroller.yaml:/app/mycontroller.yaml \
--env TZ="America/Chicago" \
--restart unless-stopped \
docker.io/mycontroller/server:2.0.0
In your web browser, check to make sure your server is running by going to http://localhost:8080 (or http://<your_ip>:8080)This should bring up a MyController login screen where your username AND password are both set to "admin"
Login to verify that it is working.On system restart, if docker and contained services do not automatically resume, use the following commands in terminal
docker restart mc_influxdb
docker restart mc_natsio
docker restart mc_mosquitto
docker restart
-
Thanks @wint0178 !!
I will go through the installation documentation and sync with your update.