Re-Installation Fail airtime_2.1.0-1_all.deb
  • Hi there,

    Thought I might reinstall everything because airtime was getting "connection refused" when trying to read its default data store and watched folders. I couldn't get it find any mp3 files.

    Alas, I can no longer get airtime installed with apt-get.

    Initially I thought it had to do with the fact that the phing channel was already initiated but that's solved with below commands:

    pear channel-delete pear.phing.info
    apt-get purge php-pear
    apt-get install php-pear

    ::

    apt-get purge airtime

    apt-get install airtime

    command fails with below output:


    Setting up icecast2...
    493
    493
    sed: -e expression #1, char 56: unknown option to `s'
    dpkg: error processing airtime (--configure):
     subprocess installed post-installation script returned error exit status 1
    configured to not write apport reports
                                          Errors were encountered while processing:
     airtime
    E: Sub-process /usr/bin/dpkg returned an error code (1)



    ::

    Airtime used to work on this machine...

    Perhaps its just a matter of cleaning more install directories than those covered by purge?

    ::
    Post edited by Thomas Hackett at 2012-06-02 17:31:25
  • 53 Comments sorted by
  • Found the problem... I think
    Cannot enter :port numbers in URL fields
  • Vote Up0Vote Down Paul BaranowskiPaul Baranowski
    Posts: 389Member, Administrator, Sourcefabric Team
    Which URL fields are you referring to? Just trying to figure out if this is
    a problem with "purge", or a user configuration problem?

  • When Debian comes up with the blue installation screens asking for URLs and Servernames, using Servername:Port will break the installation.

    Now I'm back at the part which lead me to re-install in the first place:

    /var/log/airtime/media-monitor/media-monitor.log

    2011-10-12 17:35:15,899 ERROR - [MainThread] [api_client.py : get_response_from_server()] : LINE 170 - Error Authenticating with remote server: [Errno socket error] [Errno 111] Connection refused
    2011-10-12 17:35:20,906 ERROR - [MainThread] [api_client.py : get_response_from_server()] : LINE 170 - Error Authenticating with remote server: [Errno socket error] [Errno 111] Connection refused
    2011-10-12 17:35:25,913 ERROR - [MainThread] [api_client.py : get_response_from_server()] : LINE 170 - Error Authenticating with remote server: [Errno socket error] [Errno 111] Connection refused
    2011-10-12 17:35:30,918 ERROR - [MainThread] [api_client.py : get_response_from_server()] : LINE 170 - Error Authenticating with remote server: [Errno socket error] [Errno 111] Connection refused
  • Looks like your config options aren't set correctly.

    Whats are base_url and base_port set to in "/etc/airtime/api_client.cfg"
    Airtime Pro Hosting: http://airtime.pro
  • Please post /etc/apache2/sites-available/airtime here as well.
    Airtime Pro Hosting: http://airtime.pro
  • One of you folks said you can't run Airtime on an EC2 Micro Instance.
    I did notice lots of CPU being used and it got very slow after a while.

    My option 2 was the SSL port of another server, but I just noticed in other threads that Airtime doesn't work using https, correct?

    I guess that explains these:

    2011-10-12 18:04:13,111 ERROR - [MainThread] [api_client.py : setup_media_monitor()] : LINE 397 - Exception: No JSON object could be decoded
    2011-10-12 18:04:18,123 ERROR - [MainThread] [api_client.py : setup_media_monitor()] : LINE 397 - Exception: No JSON object could be decoded
    2011-10-12 18:04:23,135 ERROR - [MainThread] [api_client.py : setup_media_monitor()] : LINE 397 - Exception: No JSON object could be decoded
    



    root@aptosid:/var/log/airtime/media-monitor# curl http://localhost:443/api/media-monitor-setup/format/json/api _key/your_api_key
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>400 Bad Request</title>
    </head><body>
    <h1>Bad Request</h1>
    <p>Your browser sent a request that this server could not understand.<br />
    Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
    Instead use the HTTPS scheme to access this URL, please.<br />

    So, probably no point in me providing more info, as I need to find a different server.

    Thanks for bearing with me here.

    ::
  • Vote Up0Vote Down Andrey PodshivalovAndrey Podshivalov
    Posts: 1,526Member, Administrator, Sourcefabric Team
    Quote:
    One of you folks said you can't run Airtime on an EC2 Micro Instance.


    correct

    Quote:

    root@aptosid:/var/log/airtime/media-monitor# curl http://localhost:443/api/media-monitor-setup/format/json/api _key/your_api_key
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>400 Bad Request</title>
    </head><body>
    <h1>Bad Request</h1>
    <p>Your browser sent a request that this server could not understand.<br />
    Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
    Instead use the HTTPS scheme to access this URL, please.<br />

    So, probably no point in me providing more info, as I need to find a different server.


    incorrect. You have missed https protocol in curl command.

    Actually airtime-demo is working via https also: https://airtime-demo.sourcefabric.org/
  • ah thanks Smile

    root@aptosid:/var/log/airtime/media-monitor# curl --insecure https://localhost:443/api/media-monitor-setup/format/json/ap i_key/your_api_key
    You are not allowed to access this resource.

    I'll try to get this up on ssl then

    ::
  • Answers:

    /etc/airtime/api_client.cfg
    # Hostname
    base_url = 'localhost'
    base_port = 443
    
    

    
    <IfModule mod_ssl.c>
    <VirtualHost _default_:443>
    
    
    
    ~ truncated ~
    
    
    
    #
    # Airtime
    #
    
          DocumentRoot /usr/share/airtime/public
    #     DirectoryIndex index.php
          DirectoryIndex index.php index.cgi index.htm index.html
    
    
          SetEnv APPLICATION_ENV "production"
    
          <Directory /usr/share/airtime/public>
                  Options Indexes FollowSymLinks MultiViews
                  AllowOverride All
                  Order allow,deny
                  Allow from all
          </Directory>
    
    
    
    ~ truncated ~
    
    
    
    ##################
    #
    # SSL
    #
    ##################
    
    	#   SSL Engine Switch:
    	#   Enable/Disable SSL for this virtual host.
    	SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
       SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
       CustomLog /var/log/apache2/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    
    
    	#   A self-signed (snakeoil) certificate can be created by installing
    	#   the ssl-cert package. See
    	#   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
    	#   If both key and certificate are stored in the same file, only the
    	#   SSLCertificateFile directive is needed.
    #	SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
    #	SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    SSLCertificateFile    ~ truncated ~.crt
    SSLCertificateKeyFile ~ truncated ~.key
    
    
    
    </VirtualHost>
    </IfModule>
  • Yes, I can login to the interface using

    https://bistro2000.fm/

    but, the media-monitor is not happy.

    2011-10-12 18:46:51,451 ERROR - [MainThread] [api_client.py : setup_media_monitor()] : LINE 397 - Exception: No JSON object could be decoded
    2011-10-12 18:46:56,463 ERROR - [MainThread] [api_client.py : setup_media_monitor()] : LINE 397 - Exception: No JSON object could be decoded
    2011-10-12 18:47:01,471 ERROR - [MainThread] [api_client.py : setup_media_monitor()] : LINE 397 - Exception: No JSON object could be decode
  • Icecast looks healthy at:

    http://bistro2000.fm:8008/
  • Vote Up0Vote Down Andrey PodshivalovAndrey Podshivalov
    Posts: 1,526Member, Administrator, Sourcefabric Team
    the main problem is https can be applied only for gui but not for python services
  • That's ok isn't it? Only communication to the user needs 443.
    What am I missing?
  • Vote Up0Vote Down Andrey PodshivalovAndrey Podshivalov
    Posts: 1,526Member, Administrator, Sourcefabric Team
    Quote:
    /etc/airtime/api_client.cfg
    # Hostname
    base_url = 'localhost'
    base_port = 443
    base port should be only http-compatible.
  • That's what I had in the first place, which causes below errors in /var/log/airtime/media-monitor/media-monitor.log

    2011-10-12 23:33:13,483 ERROR - [MainThread] [api_client.py : get_response_from_server()] : LINE 170 - Error Authenticating with remote server: [Errno socket error] [Errno 111] Connection refused
    2011-10-12 23:33:18,493 ERROR - [MainThread] [api_client.py : get_response_from_server()] : LINE 170 - Error Authenticating with remote server: [Errno socket error] [Errno 111] Connection refused
    2011-10-12 23:33:23,498 ERROR - [MainThread] [api_client.py : get_response_from_server()] : LINE 170 - Error Authenticating with remote server: [Errno socket error] [Errno 111] Connection refused
    2011-10-12 23:33:28,505 ERROR - [MainThread] [api_client.py : get_response_from_server()] : LINE 170 - Error Authenticating with remote server: [Errno socket error] [Errno 111] Connection refused
  • So, looks like Apache2 needs to listen on port 80 even though the GUI is on 443...
    Previous error is gone... can't find anything in the playlist builder just yet but
    I think it's reading the music files now... might take a while.

    Wow, really does take a while, only 20 songs a minute or so.
  • oh la la... on air Smile
    yay ... um... but how can Airtime show [On Air]
    when IceCast2 says Current Song offline...

    It's liquidsoap isn't it?
    I think for some reason, liquidsoap is not passing the sound through to icecast2, but then I can't find anything in the logs to support this assumption.

    
    Current Song:
    
    Airtime - Airtime - offline
    
    


    
    ###########################################
    # Liquidsoap config file                  #
    ###########################################
    
    ###########################################
    # Output settings                         #
    ###########################################
    output_sound_device = false
    output_icecast_vorbis = false
    output_icecast_mp3 = true
    output_shoutcast = false
    
    #output_bitrate = 128
    #output_samplerate = 44100
    #output_stereo = true
    
    ###########################################
    # Logging settings                        #
    ###########################################
    log_file = "/var/log/airtime/pypo-liquidsoap/<script>.log"
    #log_level = 3
    
    ###########################################
    # Icecast Stream settings                 #
    ###########################################
    icecast_host = "bistro2000.fm"
    icecast_port = 8008
    icecast_pass = "hackme"
    
    # Icecast mountpoint names
    mount_point_mp3 = "airtime.mp3"
    mount_point_vorbis = "airtime.ogg"
    
    # Webstream metadata settings
    icecast_url = "http://bistro2000.fm:8008"
    icecast_description = "Bistro 2000 Test"
    icecast_genre = "genre"
    
    # Audio stream metadata for vorbis/ogg is disabled by default
    # due to a number of client media players that disconnect
    # when the metadata changes to a new track. Some versions of
    # mplayer and VLC have this problem. Enable this option at your
    # own risk!
    output_icecast_vorbis_metadata = false
    
    ###########################################
    # Shoutcast Stream settings               #
    ###########################################
    shoutcast_host = "127.0.0.1"
    shoutcast_port = 9000
    shoutcast_pass = "testing"
    
    # Webstream metadata settings
    shoutcast_url = "http://airtime.sourcefabric.org"
    shoutcast_genre = "genre"
    
    


    
    <icecast>
        <location>DE</location>
        <admin>info@bistro2000.fm</admin>
    
        <limits>
            <clients>100</clients>
            <sources>2</sources>
            <queue-size>524288</queue-size>
            <client-timeout>30</client-timeout>
            <header-timeout>15</header-timeout>
            <source-timeout>10</source-timeout>
            <!-- same as burst-on-connect, but this allows for being more
                 specific on how much to burst. Most people won't need to
                 change from the default 64k. Applies to all mountpoints  -->
            <burst-size>65535</burst-size>
            <!--
            <max-bandwidth>100M</max-bandwidth>
            -->
        </limits>
    
        <authentication>
            <!-- Sources log in with username 'source' -->
            <source-password>hackme</source-password>
            <!-- Relays log in username 'relay' -->
            <relay-password>hackme</relay-password>
    
            <!-- Admin logs in with the username given below -->
            <admin-user>admin</admin-user>
            <admin-password>hackme</admin-password>
        </authentication>
    
        <!-- Uncomment this if you want directory listings -->
        <!--
        <directory>
            <yp-url-timeout>15</yp-url-timeout>
            <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
        </directory>
         -->
    
        <!-- This is the hostname other people will use to connect to your server.
        It affects mainly the urls generated by Icecast for playlists and yp
        listings. -->
        <hostname>bistro2000.fm</hostname>
    
        <!-- port to use when talking to YP etc -->
        <!--<port>8000</port> -->
    
        <!-- You may have multiple <listener> elements -->
        <listen-socket>
            <port>8008</port>
            <!-- <bind-address>127.0.0.1</bind-address> -->
            <!-- use <shoutcast-mount> in here to implicitly define port n+1 -->
        </listen-socket>
        <!--
        <listen-socket>
            <port>8001</port>
            <ssl>1</ssl>
        </listen-socket>
        -->
    
        <!--<master-server>127.0.0.1</master-server>-->
        <!--<master-server-port>8001</master-server-port>-->
        <!--<master-update-interval>120</master-update-interval>-->
    
        <!--<master-username>hackme</master-username>-->
        <!--<master-password>hackme</master-password>-->
    
        <!-- issue above authentication for relays in slave setup -->
        <!--<master-relay-auth>1</master-relay-auth>-->
    
        <!-- setting this makes all relays on-demand unless overridden, this is
             useful for master relays which do not have <relay> definitions here.
             The default is 0 -->
        <!--<relays-on-demand>1</relays-on-demand>-->
    
    
        <!-- Request the master server to redirect new listeners to this slave
             the details passed are based on <hostname> and <port> -->
        <!--<master-redirect>1</master-redirect>-->
    
        <!-- The maximum nuber of slaves that can register for new listener redirection. -->
        <!--<max-redirect-slaves>10</max-redirect-slaves>-->
    
        <!-- Relays. State connection information, and by default 
             request inline metadata for mp3 streams if available.
             An on-demand relay will only retrieve the stream if
             there are listeners connected -->
        <!--
        <relay>
            <server>127.0.0.1</server>
            <port>8001</port>
            <mount>/example.ogg</mount>
            <local-mount>/different.ogg</local-mount>
            <on-demand>1</on-demand>
            <retry-delay>30</retry-delay>
    
            <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
        </relay>
        -->
        <!-- Allow multiple master servers to be specified, tries each one in turn.
        <relay>
            <local-mount>/stream.mp3</local-mount>
            <server>a.b.c.d</server>
            <timeout>6</timeout>
            <master>
                <port>8000</port>
                <mount>/a</mount>
            </master>
            <master>
                <port>80</port>
                <mount>/</mount>
            </master>
        </relay>
        -->
    
        <!-- Only define a <mount> section if you want to use advanced options,
             like alternative usernames or passwords
             With a master/slave setup you need to define a mount in the master
             or else the server will assume that the stream is not to be made
             available to the slave.
        <mount>
            <mount-name>/*.ogg</mount-name>
    
            <username>othersource</username>
            <password>hackmemore</password>
    
            <max-listeners>1</max-listeners>
            <max-bandwidth>1000k</max-bandwidth>
            <file-seekable>0</file-seekable>
            <dump-file>/backup/live-%d-%b.ogg</dump-file>
            <burst-size>65536</burst-size>
            <fallback-mount>/example2.ogg</fallback-mount>
            <fallback-override>1</fallback-override>
            <fallback-when-full>1</fallback-when-full>
            <intro>/path/to/stream-intro.ogg</intro>
            <max-listener-duration>3600</max-listener-duration>
            <hidden>1</hidden>
            <authentication type="htpasswd">
                    <option name="filename" value="myauth"/>
                    <option name="allow_duplicate_users" value="0"/>
            </authentication>
            <on-connect>/home/icecast/bin/stream-start</on-connect>
            <on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
            <file-seekable>0</file-seekable>
        </mount>
        -->
        <!-- other auth possibilities include running a command
             to do the auth, mount, user and pass are passed via
             stdin to the program
        <mount>
        ....
            <authentication type="command">
                 <option name="listener_add" value="auth_verify"/>
            </authentication>
            
            or 
    
            for url auth, the add url needs to return a "icecast-auth-user:" http
            header for a user to authenicate. URLs are sent params via POST.
    
            <authentication type="url">
                 <option name="username" value="admin"/>
                 <option name="password" value="hackme"/>
                 <option name="handlers"        value="3" />
                 <option name="stream_auth"    value="http://myauthserver.com/scripts/auth_mount.php"/>
                 <option name="mount_add"    value="http://myauthserver.com/scripts/add_mount.php"/>
                 <option name="mount_remove" value="http://myauthserver.com/scripts/del_mount.php"/>
                 <option name="listener_add"    value="http://myauthserver.com/scripts/add_listener.php"/>
                 <option name="listener_remove" value="http://myauthserver.com/scripts/del_listener.php"/>
            </authentication>
        </mount -->
    
    
        <fileserve>1</fileserve>
    
        <!-- set the mountpoint for a shoutcast source to use, the default if not
             specified is /stream but you can change it here if an alternative is
             wanted or an extension is required
        <shoutcast-mount>/live.nsv</shoutcast-mount>
        -->
    
        <paths>
            <!-- basedir is only used if chroot is enabled -->
            <basedir>/usr/share/icecast2</basedir>
    
            <!-- Note that if <chroot> is turned on below, these paths must both
                 be relative to the new root, not the original root -->
            <logdir>/var/log/icecast2</logdir>
            <webroot>/usr/share/icecast2/web</webroot>
            <adminroot>/usr/share/icecast2/admin</adminroot>
            <!-- <pidfile>/usr/share/icecast2/icecast.pid</pidfile> -->
            <!-- <ssl-certificate>/usr/share/icecast2/icecast.pem</ssl-certificate> -->
            <!-- <deny-ip>/path/to/file-with-IPs</deny-ip> -->
            <!-- <allow-ip>/path/to/file-with-IPs</allow-ip> -->
            <!-- <deny-agents>/path/to/file-with-useragents</deny-agents> -->
    
            <!-- location of mime types files used for file serving -->
            <!-- <mime-types>/etc/mime.types</mime-types> -->
    
            <!-- Aliases: treat requests for 'source' path as being for 'dest' path
                 May be made specific to a port or bound address using the "port"
                 and "bind-address" attributes.
              -->
            <!--
            <alias source="/foo" dest="/bar"/>
              -->
            <!-- Aliases: can also be used for simple redirections as well,
                 this example will redirect all requests for http://server:port/ to
                 the status page
              -->
            <alias source="/" dest="/index.html"/>
        </paths>
    
        <logging>
            <accesslog>access.log</accesslog>
            <errorlog>error.log</errorlog>
            <!-- <accesslog_ip>0<accesslog_ip> -->
            <!-- <playlistlog>playlist.log</playlistlog> -->
          	<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
          	<logsize>10000</logsize> <!-- Max size of a logfile -->
            <!-- If logarchive is enabled (1), then when logsize is reached
                 the logfile will be moved to [error|access|playlist].log.DATESTAMP,
                 otherwise it will be moved to [error|access|playlist].log.old.
                 Default is non-archive mode (i.e. overwrite)
            -->
            <!-- <logarchive>1</logarchive> -->
        </logging>
    
        <security>
            <chroot>0</chroot>
            <!--
            <changeowner>
                <user>nobody</user>
                <group>nogroup</group>
            </changeowner>
            -->
        </security>
    </icecast>
    
    
    
  • Hi,

    Now Playing shows a moving status bar and the On Air light is on but I'm not getting a stream out of Airtime...

    I've tried both icecast and shoutcast servers.
    The shoutcast servers work fine with a different radio stream.

    Anything else I can check other than the above config files?

    P.S.

    It looks like LiquidSoap is indeed connecting to shoutcast because the web based mp3 player says:

    [Station: Liquidsoap Radio!] and

    [Track Airtime - offline]

    ::

    No music is coming through.
    What can be holing it up?


    cheers
  • Do you see any mountpoints when you goto

    http://bistro2000.fm:8008/
    ?
    Airtime Pro Hosting: http://airtime.pro
  • Hi there,

    Just found the simple solution to this headache:

    ###########################################
    # Icecast Stream settings                 #
    ###########################################
    icecast_host = "localhost"


    ::

    Even though it says localhost now, it's still accessible.

    Thanks!
  • What about the EC2 micro instance? I've been trying to make airtime work on it for 3 hours now :(
    Media monitor log keeps printing: LINE 400 - Exception: No JSON object could be decoded
  • Vote Up0Vote Down Paul BaranowskiPaul Baranowski
    Posts: 389Member, Administrator, Sourcefabric Team
    Airtime does not work on EC2 micro instance, it needs more power than that.
  • Ok..thanks.
    Although it's up and running, my only issue is that after I upload songs, they don't show up when i create a list. 
  • Hi folks,

    New year new try... Is Airtime now ready to run on a HTTPS url ?

    I've just tried 2.0.3-1 and airtime_2.1.0-1_all.deb

     

    <code>

     

    Preparing to replace airtime 2.0.3-1 (using airtime_2.1.0-1_all.deb) ...
    Unpacking replacement airtime ...
    Setting up airtime (2.1.0-1) ...
    Site airtime-vhost already disabled
    Setting up apache2...
    Module rewrite already enabled
    Configuring php5...
    Setting up icecast2...
    Restarting icecast2: Starting icecast2
    Detaching from the console
    icecast2.
    Setting up monit configuration...
    [ ok ] Stopping daemon monitor: monit.
    [ ok ] Starting daemon monitor: monit.
    www-data www-data 750 /srv/airtime
    dpkg-statoverride: warning: An override for '/srv/airtime' already exists, but --force specified so will be ignored.
    [ ok ] Restarting web server: apache2 ... waiting .
    Creating symlink for Liquidsoap...

    Debian package of Airtime detected...

    * Making sure /etc/default/locale is set properly
    LANG=en_US.utf8
     * None found.
    * Temporarily stopping any previous running services

    ******************************** Install Begin *********************************
    Ensuring python-virtualenv version > 1.4.8...Success!

    *** Creating Virtualenv for Airtime ***
    Already using interpreter /usr/bin/python
    The --no-site-packages flag is deprecated; it is now the default behavior.
    New python executable in /usr/lib/airtime/airtime_virtualenv/bin/python
    Installing distribute.............................................................................................................................................................................................done.
    Installing pip...............done.

    *** Installing Python Libraries ***
    Unpacking /var/lib/airtime/tmp/python_apps/python-virtualenv/airtime_virtual_env.pybundle
    Downloading/unpacking mutagen
      Running setup.py egg_info for package mutagen

    Downloading/unpacking amqplib
      Running setup.py egg_info for package amqplib

    Downloading/unpacking configobj
      Running setup.py egg_info for package configobj

    Downloading/unpacking kombu
      Running setup.py egg_info for package kombu

    Downloading/unpacking pyinotify
      Running setup.py egg_info for package pyinotify

    Downloading/unpacking anyjson
      Running setup.py egg_info for package anyjson

    Downloading/unpacking poster
      Running setup.py egg_info for package poster

    Downloading/unpacking pytz
      Running setup.py egg_info for package pytz

        warning: no files found matching '*.pot' under directory 'pytz'
        warning: no previously-included files found matching 'test_zdump.py'
    Installing collected packages: mutagen, amqplib, configobj, kombu, pyinotify, anyjson, poster, pytz
      Running setup.py install for mutagen
        changing mode of build/scripts-2.7/mid3v2 from 644 to 755
        changing mode of build/scripts-2.7/moggsplit from 644 to 755
        changing mode of build/scripts-2.7/mutagen-inspect from 644 to 755
        changing mode of build/scripts-2.7/mid3iconv from 644 to 755
        changing mode of build/scripts-2.7/mutagen-pony from 644 to 755

        changing mode of /usr/lib/airtime/airtime_virtualenv/bin/mid3v2 to 755
        changing mode of /usr/lib/airtime/airtime_virtualenv/bin/moggsplit to 755
        changing mode of /usr/lib/airtime/airtime_virtualenv/bin/mutagen-inspect to 755
        changing mode of /usr/lib/airtime/airtime_virtualenv/bin/mid3iconv to 755
        changing mode of /usr/lib/airtime/airtime_virtualenv/bin/mutagen-pony to 755
      Running setup.py install for amqplib

      Running setup.py install for configobj

      Running setup.py install for kombu

      Running setup.py install for pyinotify

      Running setup.py install for anyjson

      Running setup.py install for poster

      Running setup.py install for pytz

        warning: no files found matching '*.pot' under directory 'pytz'
        warning: no previously-included files found matching 'test_zdump.py'
    Successfully installed mutagen amqplib configobj kombu pyinotify anyjson poster pytz
    Cleaning up...

    *** Patching Python Libraries ***
     * Patching virtualenv libraries in /usr/lib/airtime/airtime_virtualenv/lib/python2.7

       ---Applying Patches for mutagen---
    patching file site-packages/mutagen/mp3.py
    Hunk #1 succeeded at 205 (offset -4 lines).
    patching file site-packages/mutagen/mp3.py
    Hunk #2 succeeded at 169 (offset -4 lines).
    * Checking for user pypo
     * Creating user pypo
    * Creating INI files
    * Initializing INI files
    * Airtime Version: 2.1.0
    * Storage directory setup
    * Directory /srv/airtime/stor created
    * Giving Apache permission to access /srv/airtime/stor
    * Directory /srv/airtime/stor/organize created
    * Giving Apache permission to access /srv/airtime/stor/organize

    * Database Installation
     * Creating Airtime database user
      * Database user 'airtime' created.
     * Creating Airtime database
      * Database 'airtime' created.
      * Postgres scripting language already installed
     * Creating database tables
     * Setting Airtime version
     * Inserting stor directory location /srv/airtime/stor/ into music_dirs table
    * Creating /etc/airtime
    * Creating /etc/monit/conf.d/monit-airtime-generic.cfg
    * Creating /etc/cron.d/airtime-crons
    * Creating /usr/lib/airtime
    * Creating symbolic links in /usr/bin
    * Creating /var/log/airtime
    * Creating /usr/share/airtime
    * Creating /var/log/airtime
    * Creating /var/tmp/airtime
    * Waiting for media-monitor processes to start...
    Starting Airtime Media Monitor: Done.
    * Detecting OS: ...  Found Debian GNU/Linux unstable (sid) (sid) on amd64 architecture
    * Clearing previous pypo cache
    * Waiting for pypo processes to start...
    [ ok ] Stopping daemon monitor: monit.
    [ ok ] Starting daemon monitor: monit.

    *** Verifying your system environment, running airtime-check-system ***
    AIRTIME_STATUS_URL             = http://localhost:80/api/status/format/json/api_key/%%api_key%%
    AIRTIME_SERVER_RESPONDING      = OK
    KERNEL_VERSION                 = UNKNOWN
    MACHINE_ARCHITECTURE           = UNKNOWN
    TOTAL_MEMORY_MBYTES            = UNKNOWN
    TOTAL_SWAP_MBYTES              = UNKNOWN
    AIRTIME_VERSION                = UNKNOWN
    OS                             = Debian GNU/Linux unstable (sid) x86_64
    CPU                            = AMD Phenom(tm) 9950 Quad-Core Processor
    WEB_SERVER                     = A
    PLAYOUT_ENGINE_PROCESS_ID      = FAILED
    PLAYOUT_ENGINE_RUNNING_SECONDS = 0
    PLAYOUT_ENGINE_MEM_PERC        = 0%
    PLAYOUT_ENGINE_CPU_PERC        = 0%
    LIQUIDSOAP_PROCESS_ID          = FAILED
    LIQUIDSOAP_RUNNING_SECONDS     = 0
    LIQUIDSOAP_MEM_PERC            = 0%
    LIQUIDSOAP_CPU_PERC            = 0%
    MEDIA_MONITOR_PROCESS_ID       = FAILED
    MEDIA_MONITOR_RUNNING_SECONDS  = 0
    MEDIA_MONITOR_MEM_PERC         = 0%
    MEDIA_MONITOR_CPU_PERC         = 0%
    RABBITMQ_PROCESS_ID            = FAILED
    RABBITMQ_RUNNING_SECONDS       = 0
    RABBITMQ_MEM_PERC              = 0%
    RABBITMQ_CPU_PERC              = 0%

    -- There appears to be a problem with your Airtime installation.

    -- Please visit http://wiki.sourcefabric.org/x/HABQ
    dpkg: error processing airtime (--install):
     subprocess installed post-installation script returned error exit status 1
    Processing triggers for desktop-file-utils ...
    Processing triggers for man-db ...
    Processing triggers for menu ...
    Errors were encountered while processing:
     airtime

    </code>

     

  • Hi Thomas,

    At the moment, this is scheduled for 2.2



    Airtime Pro Hosting: http://airtime.pro
  • Hi Martin,

    Thanks for the response.

    Woah, that sounds like a long way off still.

    I'll try to be patient.

    cheers

  • Hey,

    We actually took a quick look into this today. Turns out you can enable https no problem in your server config. Just make sure you allow the python services (pypo + media-monitor) to access via regular http and use your browser via https and everything will work fine.

    In the future we can add https support for the python services but that isn't as necessary since they communicate via localhost.
    Airtime Pro Hosting: http://airtime.pro
  • Hi Martin,

    Thanks for checking - if this is so maybe you can give me some file names (server config) ?

    Because my install runs into problems (as posted above)

    After the install I also found this weird:

    root@aptosid:/usr/share/airtime/build# invoke-rc.d airtime-playout restart
    Restarting Airtime Playout: ('Error loading config file: %s', error(111, 'Connection refused'))
    chown: cannot access `/etc/airtime/liquidsoap.cfg': No such file or directory
    Done.



    Which of the configs is it that causes these errors every 2-3 seconds in apache?

    [Sun Jun 10 01:24:27 2012] [error] [client 127.0.0.1] File does not exist: /var/www/api
    [Sun Jun 10 01:24:27 2012] [error] [client 127.0.0.1] File does not exist: /var/www/api
    [Sun Jun 10 01:24:30 2012] [error] [client 127.0.0.1] File does not exist: /var/www/api
    [Sun Jun 10 01:24:30 2012] [error] [client 127.0.0.1] File does not exist: /var/www/api
    [Sun Jun 10 01:24:32 2012] [error] [client 127.0.0.1] File does not exist: /var/www/api
    [Sun Jun 10 01:24:32 2012] [error] [client 127.0.0.1] File does not exist: /var/www/api
    [Sun Jun 10 01:24:35 2012] [error] [client 127.0.0.1] File does not exist: /var/www/api

     

    root@aptosid:/etc/airtime#  /usr/lib/airtime/pypo/bin/airtime-liquidsoap
    Error Authenticating with remote server: HTTP Error 404: Not Found
    Error connecting to server, waiting 5 seconds and trying again.

    Post edited by Thomas Hackett at 2012-06-09 19:26:19
  • Icecast is available here:

    http://bistro.fm:8443

    As per apache config, Airtime should be using this alias:

    https://bistro.fm/airtime/test.htm

     





    AIRTIME_STATUS_URL = http://bistro.fm:443/api/status/format/json/api_key/%%api_key%%
    AIRTIME_SERVER_RESPONDING = OK
    KERNEL_VERSION = UNKNOWN
    MACHINE_ARCHITECTURE = UNKNOWN
    TOTAL_MEMORY_MBYTES = UNKNOWN
    TOTAL_SWAP_MBYTES = UNKNOWN
    AIRTIME_VERSION = UNKNOWN
    OS = Debian GNU/Linux unstable (sid) x86_64
    CPU = AMD Phenom(tm) 9950 Quad-Core Processor
    WEB_SERVER = UNKNOWN
    PLAYOUT_ENGINE_PROCESS_ID = FAILED
    PLAYOUT_ENGINE_RUNNING_SECONDS = 0
    PLAYOUT_ENGINE_MEM_PERC = 0%
    PLAYOUT_ENGINE_CPU_PERC = 0%
    LIQUIDSOAP_PROCESS_ID = FAILED
    LIQUIDSOAP_RUNNING_SECONDS = 0
    LIQUIDSOAP_MEM_PERC = 0%
    LIQUIDSOAP_CPU_PERC = 0%
    MEDIA_MONITOR_PROCESS_ID = FAILED
    MEDIA_MONITOR_RUNNING_SECONDS = 0
    MEDIA_MONITOR_MEM_PERC = 0%
    MEDIA_MONITOR_CPU_PERC = 0%
    RABBITMQ_PROCESS_ID = FAILED
    RABBITMQ_RUNNING_SECONDS = 0
    RABBITMQ_MEM_PERC = 0%
    RABBITMQ_CPU_PERC = 0%

    Post edited by Thomas Hackett at 2012-06-09 19:19:48
  • You don't need to modify the Airtime config files to use port 443. Leave this as port 80 so that the playout / media-monitor services can communicate via normal http. You only needs to modify apache config to support https access.
    Post edited by Martin Konecny at 2012-06-10 21:58:24
    Airtime Pro Hosting: http://airtime.pro
  • Hi Martin,

    Well the first time round I didn't change anything, but I still got the above errors, as well as repetative lines in the apache logs every few seconds like this:

    [Sun Jun 10 01:24:27 2012] [error] [client 127.0.0.1] File does not exist: /var/www/api

    Obviously that path is wrong, but I don't know where it's getting it from.

  • Vote Up0Vote Down Daniel JamesDaniel James
    Posts: 844Member, Sourcefabric Team
    Hi Thomas,

    I noticed you are running Debian sid (unstable). We only test on Debian squeeze (stable) so you are likely to run into problems with bleeding-edge packages.

    The /var/www/api/ directory is not normally used by Airtime, but perhaps you have previously set up a schedule cache there, as shown in http://en.flossmanuals.net/airtime-en-2-0/exporting-the-schedule/

    One way to test for that is to search your Apache configurations, like so:

    grep -r /var/www/ /etc/apache2/*

    Cheers!

    Daniel

  • Reply to @Daniel+James:

    I think the problem that Thomas is having is that his vhost is incorrectly setup and any request via https is (incorrectly) directed to /var/www, whereas any request over http would is (correctly) directed to /usr/share/airtime/public.

    @Thomas, please verify your https vhost file.
    Airtime Pro Hosting: http://airtime.pro

  • Alias /airtime /usr/share/airtime/public

    #SetEnv APPLICATION_ENV "development"
    # SetEnv APPLICATION_ENV "production"


    <Directory /usr/share/airtime/public>
      DirectoryIndex index.php
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>

    Post edited by Thomas Hackett at 2012-06-13 19:09:06
  • I thought Airtime no longer needed the document root of the webserver... it's kinda annoying if it does since it's used for many other things.

    Post edited by Thomas Hackett at 2012-06-13 19:12:48
  • Hi Daniel, when I execute the command you suggested it produces a list of about 20 or 30 aliases which have no place in this thread but they each work fine, all using the same ssl vhost.
  • Seems like https setup is missing. Try
    http://beeznest.wordpress.com/2008/04/25/how-to-configure-https-on-apache-2/
    On Jun 13, 2012 7:11 PM, "Thomas Hackett" <<br />airtime-support@lists.sourcefabric.org> wrote:

    > alias /airtime /usr/share/airtime/public
    >
    > #SetEnv APPLICATION_ENV "development"
    > # SetEnv APPLICATION_ENV "production"
    >
    >
    > **
    > DirectoryIndex index.php
    > Options -Indexes FollowSymLinks MultiViews
    > AllowOverride All
    > Order allow,deny
    > Allow from all
    > **
    >
    >
    Airtime Pro Hosting: http://airtime.pro
  • https missing?
    What's this then?
    https://bistro.fm (works!)


    Rest assured these problems only occur "after" installing Airtime, server does its job fine for all the other services. And the errors stop when I uninstall everything Airtime related.

    Post edited by Thomas Hackett at 2012-06-13 19:31:37
  • Can anyone confirm whether Airtime should work fine without having to be in docroot? I got that impression from the templates that were delivered with the package.

    Post edited by Thomas Hackett at 2012-06-13 19:30:08
  • I think something in Airtime is defaulting to using links without the alias.
    If I try adding Alias  /api  /usr/share/airtime/public 
    then the errors stop but I also don't get the login page.

    ... nope, I need to take that back, errors start again soon as I execute invoke-rc.d airtime-playout restart
    Post edited by Thomas Hackett at 2012-06-13 19:47:55
  • api_base = 'api' ??

    Do we have a clue here ?

    /etc/airtime/api_client.cfg

    bin_dir = "/usr/lib/airtime/api_clients"

    #############################
    ## Common
    #############################

    # Value needed to access the API
    api_key = 'BYAUSPWZI6DL'

    # Path to the base of the API
    api_base = 'api'
    Post edited by Thomas Hackett at 2012-06-13 19:55:17
  • I think the alias method you are using is the wrong approach.

    If you look into 

    the apache vhost file you will see something similar to

    <VirtualHost *:80>
       ServerAdmin foo@bar.org
       DocumentRoot /home/martin/workspace/airtime/airtime_mvc/public
       php_admin_value upload_tmp_dir /tmp

      SetEnv APPLICATION_ENV "development"

      <Directory /home/martin/workspace/airtime/airtime_mvc/public>
          DirectoryIndex index.php
          AllowOverride all
          Order allow,deny
          Allow from all
      </Directory>
    </VirtualHost>


    You need to duplicate this part but replace <VirtualHost *:80> with <VirtualHost *:443>. It's all in the link I provided you.
    Airtime Pro Hosting: http://airtime.pro
  • Hi Martin,

    The config you're using is one of two templates that gets sent with airtime.
    One puts airtime in a special customised docroot of the apache server and the other doesn't - it just uses an alias to its own directory instead.

    You were suggesting my ssl is not configured: Apache is functional, running without error and config is fine. If it were not, then other services like Sam Broadcaster would fail, but they all work, happily!

    My docroot is where it should be, in /var/www
    Naturally my ssl config starts with:

    <IfModule mod_ssl.c>

    <VirtualHost _default_:443>

    So my question is, how to configure Airtime when the docroot of apache2 needs to stay in its default directory at /var/www.

    Forfeiting your default apache docroot just to accomodate one application is not a good way to recommend an installation I think. It suggests Airtime needs to be the only thing running in the vhost. Of course this is only a problem with SSL vhosts. While multiple (normal) vhosts per IP are easily implemented, you can only have one SSL vhost per IP because apache will use the certificate for the first one it finds only - I know there are some lengthy work-arounds to this rule but I don't want to go into those here.
    Post edited by Thomas Hackett at 2012-06-14 04:55:32
  • Forfeiting your default apache docroot just to accomodate one application is not a good way to recommend an installation I think.

    Unfortunately at the moment Airtime requires the root of the server. A workaround at the moment for people who cannot do this is to run on a non-standard port. For example a few users are running Airtime on port 8080. You could try running Airtime https on a non-standard port as well.
    Airtime Pro Hosting: http://airtime.pro
  • The reason we use port 80 for the radio stream and SSL for the webserver is because it provides the simplest solution for interactivity and easy listening from behind firewalls and restricted networks. Using a custom port like 8080 would negate that advantage. I'm still hoping that one day Airtime will allow us to configure the way I'm suggesting.
  • In 2.2, you will be able to select where Airtime relative to your document root. So switching to non-standard ports won't be necessary :)
    Airtime Pro Hosting: http://airtime.pro
  • Hi Martin,

    It's now 3 months later and I see you have RC for 2.2 now.

    So, is it now possible to install artime without touching the the root of the server?

    Should I try again on my SSL-based webserver?

    cheers

  • Hey Thomas,

    This feature was 90% done but did not make it to the final release of 2.2. 

    Seeing that it is a highly requested feature, I can see us releasing this feature as a point/patch release for 2.2.
    Airtime Pro Hosting: http://airtime.pro
  • Hi Martin, 

    I know some internal settings need to stay at port 80 even if the airtime GUI is being called with ssl.

    Which of the config files need to be altered to enable the following:


    I have a fresh install, but currently apache2 logs tell me:

    File does not exist: /var/www/usr

    I get the login page, containing the "Register Airtime" box. When I submit the box it goes to page not found:

    File does not exist: /var/www/usr, referer: https://bistro.fm/airtime/index.php/Showbuilder
    Post edited by Thomas Hackett at 2013-03-30 03:24:11
  • Hi again,

    Another snag after fresh install:

    Cron <root@server> /usr/lib/airtime/utils/phone_home_stat

    tail: cannot open ‘/var/log/airtime/pypo-liquidsoap/ls_script.log’ for reading:
    No such file or Directory