Install Genie ACS Back-end & GUI (Front-end) on Debian 9

Buy domain and install let's encrypt with nginx.

sudo certbot --authenticator standalone --installer nginx -d example.com --pre-hook “service nginx stop” --post-hook “service nginx start”
cd /home/user
git clone https://github.com/zaidka/genieacs.git
cd genieacs
git checkout $(git tag -l v1.1.* --sort=-v:refname | head -n 1)
npm install
npm run compile
bin/genieacs-cwmp
bin/genieacs-nbi

git clone https://github.com/zaidka/genieacs-gui.git
cd genieacs-gui
cp config/graphs-sample.json.erb config/graphs.json.erb &&
cp config/index_parameters-sample.yml config/index_parameters.yml &&
cp config/summary_parameters-sample.yml config/summary_parameters.yml &&
cp config/parameters_edit-sample.yml config/parameters_edit.yml &&
cp config/parameter_renderers-sample.yml config/parameter_renderers.yml &&
cp config/roles-sample.yml config/roles.yml &&
cp config/users-sample.yml config/users.yml
rake db:create
RAILS_ENV=development rake db:migrate
sudo apt install zlib1g-dev
sudo gem install nokogiri -v '1.6.8'
bundle
nohup rails s --binding 0.0.0.0 --port 3000 -e development &
  • Connecting CPE to ACS

See https://github.com/genieacs/genieacs/wiki/GenieACS-Auth-Config.

{
  "MONGODB_CONNECTION_URL" : "mongodb://127.0.0.1/genieacs",
  "REDIS_PORT" : "6379",
  "REDIS_HOST" : "127.0.0.1",
  "CWMP_INTERFACE" : "127.0.0.1",
  "CWMP_PORT" : 7547,
  "NBI_INTERFACE" : "127.0.0.1",
  "NBI_PORT" : 7557,
  "FS_INTERFACE" : "127.0.0.1",
  "FS_PORT" : 7567,
  "FS_HOSTNAME" : "acs.fakeserver.net",
  "FS_SSL" : true,
  "LOG_INFORMS" : true,
  "DEBUG" : false
}
nohup /genieacs-gui/bin/rails s -p 8080 -b 127.0.0.1
# Redirect all http gui requests to https gui

server {
        listen         80;
        server_name    acs.fakeserver.xyz;
        access_log /var/log/nginx/acs.fakeserver.xyz.cwmp.gui.log combined;
        error_log /var/log/nginx/acs.fakeserver.xyz.cwmp.gui.log;
        return         301 https://$server_name$request_uri;
        return         301 http://$server_name$request_uri;

    # Redirect non-https traffic to https
    # if ($scheme != "https") {
    #    return 301 https://$host$request_uri;
    # } # managed by Certbot
}

# Redirect all gui requests to local gui service

server {
        listen 118.97.192.154:443;
        server_name acs.fakeserver.xyz;
        ssl on;
        ssl_certificate_key /etc/letsencrypt/live/acs.fakeserver.xyz/privkey.pem; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/acs.fakeserver.xyz/fullchain.pem; # managed by Certbot

        access_log /var/log/nginx/acs.fakeserver.xyz.cwmp.gui.log combined;
        error_log /var/log/nginx/acs.fakeserver.xyz.cwmp.gui.log;

        client_max_body_size 50M;

        location / {
                proxy_pass http://127.0.0.1:8080;

                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Forwarded-Ssl on;
                proxy_set_header Host $host;
                #proxy_http_version 1.1;
                #proxy_set_header Upgrade $http_upgrade;
                #proxy_set_header Connection 'upgrade';
                #proxy_cache_bypass $http_upgrade;
        }

}

# Redirect all nbi requests to local nbi service

server {
        listen 118.97.192.154:7557;
        server_name acs.fakeserver.xyz;
        ssl on;
        ssl_certificate_key /etc/letsencrypt/live/acs.fakeserver.xyz/privkey.pem; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/acs.fakeserver.xyz/fullchain.pem; # managed by Certbot

        access_log /var/log/nginx/acs.fakeserver.xyz.nbi.log combined;
        error_log /var/log/nginx/acs.fakeserver.xyz.nbi.log;

        location / {
                proxy_pass http://127.0.0.1:7557;
                #proxy_http_version 1.1;
                #proxy_set_header Upgrade $http_upgrade;
                #proxy_set_header Connection 'upgrade';
                #proxy_set_header Host $host;
                #proxy_cache_bypass $http_upgrade;
                proxy_set_header Authorization "";
                auth_basic "Restricted";
                auth_basic_user_file /etc/nginx/ms-htpasswd;
        }
}

#Redirect all cwmp requests to local cwmp service

server {
        listen 118.97.192.154:7547;
        server_name acs.fakeserver.xyz;
        ssl on;
        ssl_certificate_key /etc/letsencrypt/live/acs.fakeserver.xyz/privkey.pem; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/acs.fakeserver.xyz/fullchain.pem; # managed by Certbot
        access_log /var/log/nginx/acs.fakeserver.xyz.cwmp.log combined;
        error_log /var/log/nginx/acs.fakeserver.xyz.cwmp.log;

location / {
        proxy_pass http://127.0.0.1:7547;
        #proxy_http_version 1.1;
        #proxy_set_header Upgrade $http_upgrade;
        #proxy_set_header Connection 'upgrade';
        #proxy_set_header Host $host;
        #proxy_cache_bypass $http_upgrade;
        proxy_set_header Authorization "";
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/ms-htpasswd;
}

}

# Redirect all fs requests to local fs service

server {
        listen 118.97.192.154:7567;
        server_name acs.fakeserver.xyz;
        ssl on;
        ssl_certificate_key /etc/letsencrypt/live/acs.fakeserver.xyz/privkey.pem; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/acs.fakeserver.xyz/fullchain.pem; # managed by Certbot

        access_log /var/log/nginx/acs.fakeserver.xyz.fs.log combined;
        error_log /var/log/nginx/acs.fakeserver.xyz.fs.log;

        location / {
                proxy_pass http://127.0.0.1:7567;
                #proxy_http_version 1.1;
                #proxy_set_header Upgrade $http_upgrade;
                #proxy_set_header Connection 'upgrade';
                #proxy_set_header Host $host;
                #proxy_cache_bypass $http_upgrade;
                proxy_set_header Authorization "";
                auth_basic "Restricted";
                auth_basic_user_file /etc/nginx/ms-htpasswd;
        }
}

Create links for cert and key file:

cd genieacs/config/
sudo cp /etc/letsencrypt/live/acs.realserver.xyz/fullchain.pem fs.crt
sudo cp /etc/letsencrypt/live/acs.realserver.xyz/privkey.pem fs.key

Create /etc/nginx/ms-htpasswd with the format described here.

  • Troubleshooting on GenieACS-GUI

See https://stackoverflow.com/questions/20875591/actioncontrollerinvalidauthenticitytoken-in-registrationscontrollercreate.

Install GenieACS for Supervisor

Berkas genieacs-gui.conf.

[program:genieacs-gui]
directory=/home/user/genieacs-gui
command=/home/user/genieacs-gui/bin/rails s -p 8080 -b 127.0.0.1
autostart=true
autorestart=true
stdout_logfile=/var/log/genieacs-gui.out.log
stderr_logfile=/var/log/genieacs-gui.err.log
user=user

Berkas genieacs-nbi.conf.

[program:genieacs-nbi]
directory=/home/user/genieacs
command=/home/user/genieacs/bin/genieacs-nbi
autostart=true
autorestart=true
stdout_logfile=/var/log/genieacs-nbi.out.log
stderr_logfile=/var/log/genieacs-nbi.err.log
user=user

Berkas genieacs-fs.conf.

[program:genieacs-fs]
directory=/home/user/genieacs
command=/home/user/genieacs/bin/genieacs-fs
autostart=true
autorestart=true
stdout_logfile=/var/log/genieacs-fs.out.log
stderr_logfile=/var/log/genieacs-fs.err.log
user=user

Berkas genieacs-cwmp.conf.

[program:genieacs-cwmp]
directory=/home/user/genieacs
command=/home/user/genieacs/bin/genieacs-cwmp
autostart=true
autorestart=true
stdout_logfile=/var/log/genieacs-cwmp.out.log
stderr_logfile=/var/log/genieacs-cwmp.err.log
user=user

Tambahkan ke konfigurasi Supervisor.

sudo ln -s /home/user/genieacs-gui/genieacs-gui.conf /etc/supervisor/conf.d/
sudo ln -s /home/user/genieacs/genieacs-nbi.conf /etc/supervisor/conf.d/
sudo ln -s /home/user/genieacs/genieacs-fs.conf /etc/supervisor/conf.d/
sudo ln -s /home/user/genieacs/genieacs-cwmp.conf /etc/supervisor/conf.d/

Aktifkan konfigurasi

sudo supervisorctl reread &&
sudo supervisorctl update &&
sudo superisorctl status

Memodifikasi Pengguna

Untuk memodifikasi pengguna pada panel GUI Genie ACS bisa dilakukan pada berkas genieacs-gui/config/users.yml.

Sampel Requests

Misal dari klien ke server.

curl -v -X POST -u admin:admin https://acs.fakeserver.xyz:7547 -d @/home/sob/cpe/r1.xml

Isi berkas r1.xml .

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
    <SOAP-ENV:Header>
        <cwmp:ID SOAP-ENV:mustUnderstand="1">24</cwmp:ID>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <cwmp:Inform>
            <DeviceId>
                <Manufacturer>ZTE</Manufacturer>
                <OUI>74B57E</OUI>
                <ProductClass>F609</ProductClass>
                <SerialNumber>ZTEAAAABBBBCCCC</SerialNumber>
            </DeviceId>
            <Event SOAP-ENC:arrayType="cwmp:EventStruct[1]">
                <EventStruct>
                    <EventCode>2 PERIODIC</EventCode>
                    <CommandKey></CommandKey>
                </EventStruct>
            </Event>
            <MaxEnvelopes>1</MaxEnvelopes>
            <CurrentTime>1970-01-01T19:21:41</CurrentTime>
            <RetryCount>0</RetryCount>
            <ParameterList SOAP-ENC:arrayType="cwmp:ParameterValueStruct[8]">
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceSummary</Name>
                    <Value xsi:type="xsd:string">InternetGatewayDevice:1.0[](Baseline:1, EthernetLAN:4,FE:0,GE:4,WiFi:1, PONWAN:1, Voip:2, Time:1, IPPing:1)</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
                    <Value xsi:type="xsd:string">1.0</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
                    <Value xsi:type="xsd:string">V5.2</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
                    <Value xsi:type="xsd:string">V5.2.10P3T32</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
                    <Value xsi:type="xsd:string">TLCO.GRP2</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
                    <Value xsi:type="xsd:string">http://180.253.15.28:58000</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
                    <Value xsi:type="xsd:string">unsetCommandKey</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.2.ExternalIPAddress</Name>
                    <Value xsi:type="xsd:string">180.253.15.28</Value>
                </ParameterValueStruct>
            </ParameterList>
        </cwmp:Inform>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Isi respon.

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
    <soap-env:Header>
        <cwmp:ID soap-env:mustUnderstand="1">24</cwmp:ID>
    </soap-env:Header>
    <soap-env:Body>
        <cwmp:InformResponse>
            <MaxEnvelopes>1</MaxEnvelopes>
        </cwmp:InformResponse>
    </soap-env:Body>
</soap-env:Envelope>

Referensi

results matching ""

    No results matching ""