No…
grep DOCKER_COMPOSE_VERSION mailcow.conf
English
No…
grep DOCKER_COMPOSE_VERSION mailcow.conf
DocFraggle
root@vmi16215**:/etc/nginx/root/mailcow-dockerized# grep DOCKER_COMPOSE_VERSION mailcow.conf
DOCKER_COMPOSE_VERSION=native
Maybe you have the old docker-compose installed and that’s messing around… check with
which docker-compose
This file can’t be read
root@vmi16215**:/etc/nginx/root/mailcow-dockerized# which docker-compose
/usr/local/bin/docker-compose
[unknown]
OK so you seem to have the old version installed. I don’t know why this would interfere, but the error from above is always reported with the old standalone version… try to remove it, it should be the docker-compose-plugin package
apt remove docker-compose-plugin
(it’s Ubuntu you are using, right?)
DocFraggle
Where do I install the lastest version?
You don’t, it’s already included in docker-ce
DocFraggle
So what should I do next?
So after removing the package
which docker-compose
shouldn’t output anything. Try again to startup mailcow
docker compose up -d
root@vmi1621588:/etc/nginx/root/mailcow-dockerized# which docker-compose
/usr/local/bin/docker-compose
root@vmi1621588:/etc/nginx/root/mailcow-dockerized# docker compose up -d
unknown shorthand flag: ‘d’ in -d
See ‘docker –help’.
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Common Commands:
run Create and run a new container from an image
exec Execute a command in a running container
ps List containers
build Build an image from a Dockerfile
pull Download an image from a registry
push Upload an image to a registry
images List images
login Log in to a registry
logout Log out from a registry
search Search Docker Hub for images
version Show the Docker version information
info Display system-wide information
Management Commands:
builder Manage builds
buildx* Docker Buildx
checkpoint Manage checkpoints
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
plugin Manage plugins
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Swarm Commands:
swarm Manage Swarm
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container’s changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container’s filesystem
events Get real time events from the server
export Export a container’s filesystem as a tar archive
history Show the history of an image
import Import the contents from a tarball to create a filesystem image
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
save Save one or more images to a tar archive (streamed to STDOUT by default)
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
Global Options:
–config string Location of client config files (default “/root/.docker”)
-c, –context string Name of the context to use to connect to the daemon (overrides
DOCKER_HOST env var and default context set with “docker context use”)
-D, –debug Enable debug mode
-H, –host list Daemon socket to connect to
-l, –log-level string Set the logging level (“debug”, “info”, “warn”, “error”, “fatal”)
(default “info”)
–tls Use TLS; implied by –tlsverify
–tlscacert string Trust certs signed only by this CA (default “/root/.docker/ca.pem”)
–tlscert string Path to TLS certificate file (default “/root/.docker/cert.pem”)
–tlskey string Path to TLS key file (default “/root/.docker/key.pem”)
–tlsverify Use TLS and verify the remote
-v, –version Print version information and quit
Run ‘docker COMMAND –help’ for more information on a command.
Hmm, maybe it was the wrong package… so reinstall it
apt install docker-compose-plugin
I’m running Rocky 8, so I’m not sure which package is the old docker-compose standalone version on Ubunutu.
You can try to install apt-file
apt install apt-file -y
apt-file update
And then check which package the binary belongs to
apt-file search /usr/local/bin/docker-compose
Strange, where did it come from then? Run
/usr/local/bin/docker-compose --version
You could try to move it to /tmp, so it definitely won’t be executed
root@vmi16215**:/etc/nginx/root/mailcow-dockerized# /usr/local/bin/docker-compose –version
docker-compose version 1.29.2, build 5becea4c
Yes, this version will have trouble.
docker compose version
should produce a 2.X version.
So try to move the binary to /tmp and then start your mailcow
mv /usr/local/bin/docker-compose /tmp
docker compose up -d
Looks like it’s working
Yes. Thanks a lot, but web is still can’t be opened
Does curl show anything? At least that should work
curl -v http://127.0.0.1:8080
It works! A html web!
Then there’s a problem with your reverse proxy config now
What should I do next? Nginx is normally running:
Paste your Nginx config and do a
netstat -tulpen
[unknown]
server {
listen 80;
listen [::]:80;
server_name mikemail.mikelearner.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mikemail.mikelearner.com;
ssl_certificate /etc/nginx/root/mailcow-dockerized/data/assets/ssl/cert.pem;
ssl_certificate_key /etc/nginx/root/mailcow-dockerized/data/assets/ssl/key.pem;
ssl_session_timeout 2h;
ssl_session_cache shared:mailcow:16m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5:!SHA1:!kRSA;
ssl_prefer_server_ciphers off;
location /Microsoft-Server-ActiveSync {
proxy_pass http://127.0.0.1:8080/Microsoft-Server-ActiveSync;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 75;
proxy_send_timeout 3650;
proxy_read_timeout 3650;
proxy_buffers 24 256k;
client_body_buffer_size 512k;
client_max_body_size 0;
}
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 0;
}
}
And your config file? Please just paste it and don’t use a screenshot
@“nickydream_”#p14417 ? What do you mean? Your Nginx reverse proxy config file?
Ah OK, forum rampaged once again
DocFraggle
nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
What’s the output of
curl -vH “Host: mikemail.mikelearner.com” http://127.0.0.1
root@vmi1621588:~# curl -vH “Host: mikemail.mikelearner.com” http://127.0.0.1
Failed to convert mikemail.mikelearner.com” to ACE; string contains a disallowed character
Closing connection -1
curl: (3) Failed to convert mikemail.mikelearner.com” to ACE; string contains a disallowed character
Trying 127.0.0.1:80…
TCP_NODELAY set
Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
GET / HTTP/1.1
Host: 127.0.0.1
User-Agent: curl/7.68.0
Accept: /
<p>For online documentation and support please refer to
<a href=“>
Commercial support is available at
<a href=“>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
try to type it by hand, seems copy&paste breaks things for you…
this forum sometimes really annoys me
curl -vH “Host: mikemail.mikelearner.com” http://127.0.0.1
if you copy that the "" are missing upon pasting
root@vmi1621588:~# ping mikemail.mikelearner.com
ping: mikemail.mikelearner.com: Name or service not known
root@vmi1621588:~# curl -vH “Host: mikemail.mikelearner.com” http://127.0.0.1
GET / HTTP/1.1
Host: mikemail.mikelearner.com
User-Agent: curl/7.68.0
Accept: /
OK, it’s working. But it looks you didn’t setup the DNS records?
> host mikemail.mikelearner.com
Host mikemail.mikelearner.com not found: 3(NXDOMAIN)
I think nginx listen port 80 and according to its name (I have another web that needs nginx to proxy) , send its data to different web/mail. Because in the server, there is only an IP address. Web can do that…
No, you don’t have an A record for mikemail.mikelearner.com, only for mikelearner.com as far as I can see there.
So what’s wrong with my DNS records?
DocFraggle you don’t have an A record for mikemail.mikelearner.com
So I should delete MX record?
If my record is correct (with MX record ), why can’t I open web. Strange
No… I’m not familiar with the strange DNS console you pasted above, but you should be able to create a new A record there
mikemail.mikelearner.com has to point to the IP address of your server (A record)
The MX record is correct
You need autodiscover.mikelearner.com and autoconfig.mikelearner.com as well, either another A record with the IP of your server or a CNAME record pointing to mikemail.mikelearner.com
This whole thread is what we call “eine sehr schwere Geburt” in Germany…
DNS solved but
mikemail.mikelearner.com redirected you too many times. Still can’t open page
[unknown]
Not useful:
This page isn’t workingmikemail.mikelearner.com redirected you too many times.