Hello,
I started installing on a Ubuntu 16.04 machine with NGINX a mattermost server.
So yesterday everything worked fine. I did the installation then I went through the configuration.
After a restart of the server mattermost stopped working.
Either I am getting simply an empty page or depending on which I restart first a Bad Gateway message.
In the logs I see messages like: http: TLS handshake error from <address>: tls: first record does not look like a TLS handshake
My config looks like this
{ "ServiceSettings": { "SiteURL": "https://<DOMAIN>", "LicenseFileLocation": "", "ListenAddress": ":8065", "ConnectionSecurity": "TLS", "TLSCertFile": "/etc/letsencrypt/live/<DOMAIN>/fullchain.pem", "TLSKeyFile": "/etc/letsencrypt/live/<DOMAIN>/privkey.pem", "UseLetsEncrypt": true, "LetsEncryptCertificateCacheFile": "./config/letsencrypt.cache", "Forward80To443": true, "ReadTimeout": 300, "WriteTimeout": 300, "MaximumLoginAttempts": 10, "GoroutineHealthThreshold": -1, "GoogleDeveloperKey": "", "EnableOAuthServiceProvider": false, "EnableIncomingWebhooks": true, "EnableOutgoingWebhooks": true, "EnableCommands": true, "EnableOnlyAdminIntegrations": true, "EnablePostUsernameOverride": false, "EnablePostIconOverride": false, "EnableAPIv3": true, "EnableLinkPreviews": false, "EnableTesting": false, "EnableDeveloper": false, "EnableSecurityFixAlert": true, "EnableInsecureOutgoingConnections": false, "EnableMultifactorAuthentication": false, "EnforceMultifactorAuthentication": false, "EnableUserAccessTokens": false, "AllowCorsFrom": "", "SessionLengthWebInDays": 30, "SessionLengthMobileInDays": 30, "SessionLengthSSOInDays": 30, "SessionCacheInMinutes": 10, "WebsocketSecurePort": 443, "WebsocketPort": 80, "WebserverMode": "gzip", "EnableCustomEmoji": false, "EnableEmojiPicker": true, "RestrictCustomEmojiCreation": "all", "RestrictPostDelete": "all", "AllowEditPost": "always", "PostEditTimeLimit": 300, "TimeBetweenUserTypingUpdatesMilliseconds": 5000, "EnablePostSearch": true, "EnableUserTypingMessages": true, "EnableChannelViewedMessages": true, "EnableUserStatuses": true, "ClusterLogTimeoutMilliseconds": 2000 }, "TeamSettings": { "SiteName": "Mattermost", "MaxUsersPerTeam": 50, "EnableTeamCreation": false, "EnableUserCreation": true, "EnableOpenServer": false, "RestrictCreationToDomains": "", "EnableCustomBrand": false, "CustomBrandText": "", "CustomDescriptionText": "", "RestrictDirectMessage": "any", "RestrictTeamInvite": "all", "RestrictPublicChannelManagement": "all", "RestrictPrivateChannelManagement": "all", "RestrictPublicChannelCreation": "all", "RestrictPrivateChannelCreation": "all", "RestrictPublicChannelDeletion": "all", "RestrictPrivateChannelDeletion": "all", "RestrictPrivateChannelManageMembers": "all", "UserStatusAwayTimeout": 300, "MaxChannelsPerTeam": 2000, "MaxNotificationsPerChannel": 1000, "TeammateNameDisplay": "username" }, "SqlSettings": { "DriverName": "postgres", "DataSource": "<connectionURL>", "DataSourceReplicas": [], "DataSourceSearchReplicas": [], "MaxIdleConns": 20, "MaxOpenConns": 300, "Trace": false, "AtRestEncryptKey": "blah", "QueryTimeout": 30 }, "LogSettings": { "EnableConsole": true, "ConsoleLevel": "INFO", "EnableFile": true, "FileLevel": "INFO", "FileFormat": "", "FileLocation": "", "EnableWebhookDebugging": true, "EnableDiagnostics": true }, "PasswordSettings": { "MinimumLength": 5, "Lowercase": false, "Number": false, "Uppercase": false, "Symbol": false }, "FileSettings": { "EnableFileAttachments": true, "EnableMobileUpload": true, "EnableMobileDownload": true, "MaxFileSize": 52428800, "DriverName": "local", "Directory": "./data/", "EnablePublicLink": false, "PublicLinkSalt": "blah", "InitialFont": "luximbi.ttf", "AmazonS3AccessKeyId": "", "AmazonS3SecretAccessKey": "", "AmazonS3Bucket": "", "AmazonS3Region": "us-east-1", "AmazonS3Endpoint": "s3.amazonaws.com", "AmazonS3SSL": true, "AmazonS3SignV2": false, "AmazonS3SSE": false }, "EmailSettings": { "EnableSignUpWithEmail": true, "EnableSignInWithEmail": true, "EnableSignInWithUsername": true, "SendEmailNotifications": true, "RequireEmailVerification": true, "FeedbackName": "", "FeedbackEmail": "", "FeedbackOrganization": "", "EnableSMTPAuth": true, "SMTPUsername": "<ADDRESS>", "SMTPPassword": "<PW>", "SMTPServer": "<MAILDOMAIN>", "SMTPPort": "587", "ConnectionSecurity": "STARTTLS", "InviteSalt": "<SALT>", "SendPushNotifications": false, "PushNotificationServer": "", "PushNotificationContents": "generic", "EnableEmailBatching": false, "EmailBatchingBufferSize": 256, "EmailBatchingInterval": 30, "SkipServerCertificateVerification": true, "EmailNotificationContentsType": "full" }, "RateLimitSettings": { "Enable": false, "PerSec": 10, "MaxBurst": 100, "MemoryStoreSize": 10000, "VaryByRemoteAddr": true, "VaryByHeader": "" }, "PrivacySettings": { "ShowEmailAddress": false, "ShowFullName": true }, "SupportSettings": { "TermsOfServiceLink": "https://about.mattermost.com/default-terms/", "PrivacyPolicyLink": "https://about.mattermost.com/default-privacy-policy/", "AboutLink": "https://about.mattermost.com/default-about/", "HelpLink": "https://about.mattermost.com/default-help/", "ReportAProblemLink": "https://about.mattermost.com/default-report-a-problem/", "AdministratorsGuideLink": "https://about.mattermost.com/administrators-guide/", "TroubleshootingForumLink": "https://about.mattermost.com/troubleshooting-forum/", "CommercialSupportLink": "https://about.mattermost.com/commercial-support/", "SupportEmail": "feedback@mattermost.com" }, "AnnouncementSettings": { "EnableBanner": false, "BannerText": "", "BannerColor": "#f2a93b", "BannerTextColor": "#333333", "AllowBannerDismissal": true }, "GitLabSettings": { "Enable": false, "Secret": "", "Id": "", "Scope": "", "AuthEndpoint": "", "TokenEndpoint": "", "UserApiEndpoint": "" }, "GoogleSettings": { "Enable": false, "Secret": "", "Id": "", "Scope": "profile email", "AuthEndpoint": "https://accounts.google.com/o/oauth2/v2/auth", "TokenEndpoint": "https://www.googleapis.com/oauth2/v4/token", "UserApiEndpoint": "https://www.googleapis.com/plus/v1/people/me" }, "Office365Settings": { "Enable": false, "Secret": "", "Id": "", "Scope": "User.Read", "AuthEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", "TokenEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/token", "UserApiEndpoint": "https://graph.microsoft.com/v1.0/me" }, "LdapSettings": { "Enable": false, "LdapServer": "", "LdapPort": 389, "ConnectionSecurity": "", "BaseDN": "", "BindUsername": "", "BindPassword": "", "UserFilter": "", "FirstNameAttribute": "", "LastNameAttribute": "", "EmailAttribute": "", "UsernameAttribute": "", "NicknameAttribute": "", "IdAttribute": "", "PositionAttribute": "", "SyncIntervalMinutes": 60, "SkipCertificateVerification": false, "QueryTimeout": 60, "MaxPageSize": 0, "LoginFieldName": "" }, "ComplianceSettings": { "Enable": false, "Directory": "./data/", "EnableDaily": false }, "LocalizationSettings": { "DefaultServerLocale": "de", "DefaultClientLocale": "de", "AvailableLocales": "de,en" }, "SamlSettings": { "Enable": false, "Verify": true, "Encrypt": true, "IdpUrl": "", "IdpDescriptorUrl": "", "AssertionConsumerServiceURL": "", "IdpCertificateFile": "", "PublicCertificateFile": "", "PrivateKeyFile": "", "FirstNameAttribute": "", "LastNameAttribute": "", "EmailAttribute": "", "UsernameAttribute": "", "NicknameAttribute": "", "LocaleAttribute": "", "PositionAttribute": "", "LoginButtonText": "With SAML" }, "NativeAppSettings": { "AppDownloadLink": "https://about.mattermost.com/downloads/", "AndroidAppDownloadLink": "https://about.mattermost.com/mattermost-android-app/", "IosAppDownloadLink": "https://about.mattermost.com/mattermost-ios-app/" }, "ClusterSettings": { "Enable": false, "ClusterName": "", "OverrideHostname": "", "UseIpAddress": true, "UseExperimentalGossip": false, "ReadOnlyConfig": true, "GossipPort": 8074, "StreamingPort": 8075 }, "MetricsSettings": { "Enable": false, "BlockProfileRate": 0, "ListenAddress": ":8067" }, "AnalyticsSettings": { "MaxUsersForStatistics": 2500 }, "WebrtcSettings": { "Enable": false, "GatewayWebsocketUrl": "", "GatewayAdminUrl": "", "GatewayAdminSecret": "", "StunURI": "", "TurnURI": "", "TurnUsername": "", "TurnSharedKey": "" }, "ElasticsearchSettings": { "ConnectionUrl": "http://dockerhost:9200", "Username": "elastic", "Password": "changeme", "EnableIndexing": false, "EnableSearching": false, "Sniff": true, "PostIndexReplicas": 1, "PostIndexShards": 1 }, "DataRetentionSettings": { "Enable": false }, "JobSettings": { "RunJobs": true, "RunScheduler": true }, "PluginSettings": { "Plugins": {} } }
My mattermost.config for Nginx in sites-available linked in sites-enabled:
upstream backend {
server <IP>:8065;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <URL>;
include /etc/nginx/conf.d/ssl.conf;
location ~ /api/v[0-9]+/(users/)?websocket$ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 50M;
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_set_header X-Frame-Options "SAMEORIGIN";
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_pass http://backend;
}
location / {
client_max_body_size 50M;
proxy_set_header Connection "";
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_set_header X-Frame-Options "SAMEORIGIN";
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_cache mattermost_cache;
proxy_cache_revalidate on;
proxy_cache_min_uses 2;
proxy_cache_use_stale timeout;
proxy_cache_lock on;
proxy_pass http://backend;
}
}
I hope someone can help me.
Greetings.