Install Failed - email not configured

AI-generated summary

The discussion revolves around an installation failure of Discourse on Ubuntu 14.04 LTS. The error log provided by WaltGiroir shows a PostgreSQL configuration success, but ultimately ends in failure due to an unconfigured email. riking points out the actual error was hidden among console output, which is an unconfigured mail server. As WaltGiroir confirms, correcting the mail configuration resolves the issue. codinghorror and sam discuss the readability of error messages, suggesting that the discourse-setup script has improved the situation.

From clean version of Ubuntu 14.04 LTS, here is the error from the install


Success. You can now start the database server using:

    /usr/lib/postgresql/9.3/bin/postgres -D /shared/postgres_data
or
    /usr/lib/postgresql/9.3/bin/pg_ctl -D /shared/postgres_data -l logfile start


I, [2015-04-06T13:04:51.648386 #45]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2015-04-06T13:04:51.664015 #45]  INFO -- : 
I, [2015-04-06T13:04:51.664199 #45]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2015-04-06T13:04:51.678834 #45]  INFO -- : 
I, [2015-04-06T13:04:51.679594 #45]  INFO -- : > /root/upgrade_postgres
I, [2015-04-06T13:04:51.694165 #45]  INFO -- : 
I, [2015-04-06T13:04:51.694733 #45]  INFO -- : > rm /root/upgrade_postgres
I, [2015-04-06T13:04:51.704441 #45]  INFO -- : 
I, [2015-04-06T13:04:51.706267 #45]  INFO -- : Replacing data_directory = '/var/lib/postgresql/9.3/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/9.3/main/postgresql.conf
I, [2015-04-06T13:04:51.707298 #45]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/9.3/main/postgresql.conf
I, [2015-04-06T13:04:51.708702 #45]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/9.3/main/postgresql.conf
I, [2015-04-06T13:04:51.709394 #45]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/9.3/main/postgresql.conf
I, [2015-04-06T13:04:51.709981 #45]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/9.3/main/postgresql.conf
I, [2015-04-06T13:04:51.710597 #45]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/9.3/main/postgresql.conf
I, [2015-04-06T13:04:51.711392 #45]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2015-04-06T13:04:51.721940 #45]  INFO -- : 
I, [2015-04-06T13:04:51.722459 #45]  INFO -- : Replacing (?-mix:#?max_wal_senders *=.*) with max_wal_senders = 4 in /etc/postgresql/9.3/main/postgresql.conf
I, [2015-04-06T13:04:51.723326 #45]  INFO -- : Replacing (?-mix:#?wal_level *=.*) with wal_level = hot_standby in /etc/postgresql/9.3/main/postgresql.conf
I, [2015-04-06T13:04:51.724513 #45]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/9.3/main/pg_hba.conf
I, [2015-04-06T13:04:51.725340 #45]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/9.3/main/pg_hba.conf
I, [2015-04-06T13:04:51.726423 #45]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/9.3/bin/postmaster -D /etc/postgresql/9.3/main
I, [2015-04-06T13:04:51.753588 #45]  INFO -- : > sleep 5
2015-04-06 13:04:51 UTC [118-1] LOG:  database system was shut down at 2015-04-06 13:04:51 UTC
2015-04-06 13:04:51 UTC [122-1] LOG:  autovacuum launcher started
2015-04-06 13:04:51 UTC [115-1] LOG:  database system is ready to accept connections
I, [2015-04-06T13:04:56.769954 #45]  INFO -- : 
I, [2015-04-06T13:04:56.772768 #45]  INFO -- : > su postgres -c 'createdb discourse' || true
I, [2015-04-06T13:04:57.097411 #45]  INFO -- : 
I, [2015-04-06T13:04:57.098704 #45]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
I, [2015-04-06T13:04:57.204210 #45]  INFO -- : CREATE ROLE

I, [2015-04-06T13:04:57.205478 #45]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2015-04-06T13:04:57.306197 #45]  INFO -- : GRANT

I, [2015-04-06T13:04:57.307553 #45]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
I, [2015-04-06T13:04:57.406860 #45]  INFO -- : ALTER SCHEMA

I, [2015-04-06T13:04:57.408347 #45]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
I, [2015-04-06T13:04:57.534395 #45]  INFO -- : CREATE EXTENSION

I, [2015-04-06T13:04:57.536087 #45]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
I, [2015-04-06T13:04:57.646119 #45]  INFO -- : CREATE EXTENSION

I, [2015-04-06T13:04:57.647680 #45]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists hstore;"'
I, [2015-04-06T13:04:57.773218 #45]  INFO -- : CREATE EXTENSION

I, [2015-04-06T13:04:57.774521 #45]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"'
I, [2015-04-06T13:04:57.885054 #45]  INFO -- : CREATE EXTENSION

I, [2015-04-06T13:04:57.887659 #45]  INFO -- : > sudo -u postgres psql discourse
I, [2015-04-06T13:04:57.901331 #45]  INFO -- : update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'discourse' AND encoding = pg_encoding_to_char('SQL_ASCII');

2015-04-06 13:04:57 UTC [214-1] postgres@discourse ERROR:  invalid input syntax for integer: "SQL_ASCII" at character 126
2015-04-06 13:04:57 UTC [214-2] postgres@discourse STATEMENT:  update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'discourse' AND encoding = pg_encoding_to_char('SQL_ASCII');
ERROR:  invalid input syntax for integer: "SQL_ASCII"
LINE 1: ... = 'discourse' AND encoding = pg_encoding_to_char('SQL_ASCII...
                                                             ^
I, [2015-04-06T13:04:58.024196 #45]  INFO -- : File > /var/lib/postgresql/take-database-backup  chmod: +x
I, [2015-04-06T13:04:58.040752 #45]  INFO -- : File > /var/spool/cron/crontabs/postgres  chmod: 
I, [2015-04-06T13:04:58.041634 #45]  INFO -- : > echo postgres installed!
I, [2015-04-06T13:04:58.056435 #45]  INFO -- : postgres installed!

I, [2015-04-06T13:04:58.087539 #45]  INFO -- : File > /etc/service/redis/run  chmod: +x
I, [2015-04-06T13:04:58.117823 #45]  INFO -- : File > /etc/runit/3.d/10-redis  chmod: +x
I, [2015-04-06T13:04:58.119364 #45]  INFO -- : Replacing daemonize yes with  in /etc/redis/redis.conf
I, [2015-04-06T13:04:58.120657 #45]  INFO -- : Replacing (?-mix:^pidfile.*$) with  in /etc/redis/redis.conf
I, [2015-04-06T13:04:58.122196 #45]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2015-04-06T13:04:58.137861 #45]  INFO -- : 
I, [2015-04-06T13:04:58.138601 #45]  INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in /etc/redis/redis.conf
I, [2015-04-06T13:04:58.139669 #45]  INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redis_data in /etc/redis/redis.conf
I, [2015-04-06T13:04:58.141051 #45]  INFO -- : > echo redis installed
I, [2015-04-06T13:04:58.154658 #45]  INFO -- : redis installed

I, [2015-04-06T13:04:58.155731 #45]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end'
I, [2015-04-06T13:04:58.242444 #45]  INFO -- : Aborting! Mail is not configured!

I, [2015-04-06T13:04:58.242960 #45]  INFO -- : Terminating async processes
I, [2015-04-06T13:04:58.243120 #45]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/9.3/bin/postmaster -D /etc/postgresql/9.3/main pid: 115
2015-04-06 13:04:58 UTC [115-2] LOG:  received fast shutdown request
2015-04-06 13:04:58 UTC [115-3] LOG:  aborting any active transactions
2015-04-06 13:04:58 UTC [122-2] LOG:  autovacuum launcher shutting down
2015-04-06 13:04:58 UTC [119-1] LOG:  shutting down
2015-04-06 13:04:58 UTC [119-2] LOG:  database system is shut down


FAILED
--------------------
RuntimeError: /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end' failed with return #<Process::Status: pid 225 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:105:in `spawn'
exec failed with the params "/usr/local/bin/ruby -e 'if ENV[\"DISCOURSE_SMTP_ADDRESS\"] == \"smtp.example.com\"; puts \"Aborting! Mail is not configured!\"; exit 1; end'"
2a8849eeaf33bc6a452bdf0bcc6427707ed7e05873719f70a60cbc896f2d570e
FAILED TO BOOTSTRAP

Here’s the real error. Your mail is not configured.

Yes Indeed. Having a correct configuration works. I had made the changes but left the fields commented.

Another Id10t error

As @riking has pointed out, we bury the actual error in Unix console line noise bullshit. Any way to suppress the noise here and have the error stand out more @sam?

I think now that we use the discourse-setup script this issue is mostly sorted.