Migrate git from one server to another


Give new origin name here i have given as testtest and http://new-repo.com is new server repository url change as per yours .

-----------------------------------------------------------------------------------------------------------------------------------------
git clone --bare  http://current-repo.com
-----------------------------------------------------------------------------------------------------------------------------------------
$git remote add testtest http://new-repo.com
-----------------------------------------------------------------------------------------------------------------------------------------
$git push -f --tags testtest refs/heads/*:refs/heads/*
-----------------------------------------------------------------------------------------------------------------------------------------

forever Upstart job for UBUNTU

Below is the upstart job for ubuntu for eg: create a file in /etc/init/test.conf and copy the below content to test.conf file, and change path to your app.js to yours, 



#!upstart
description "node.js server"
author      "kirthan shetty"

start on runlevel [2345] and started networking
stop on runlevel [!2345] or  stopped networking
expect fork

script
    export HOME="/root"

    echo $$ > /var/run/yourprogram.pid
    exec sudo -u root PORT=3004 /usr/bin/node /path to your app.js >> /var/log/yourprogram.sys.log 2>&1
end script

pre-start script
    # Date format same as (new Date()).toISOString() for consistency
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/yourprogram.sys.log
end script

pre-stop script
    rm /var/run/yourprogram.pid
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/yourprogram.sys.log
end script





to start #service test start
to stop # service test stop

Redirect url from non-www to www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.co [NC]
RewriteRule (.*) http://www.domain.co/$1 [L,R=301]

copy the above content to .htaccess file in your apache home directory 
Change the domain to u'r domain name

How to Find and Kill a Process that is Using a Particular Port

I had a problem with tomcat, it says that port 8080 is already in use so I can not use it …
What I did ?

1- Find what application/process is using the pro, type:

----------------------------------------------------------------------------------------------------
sudo netstat -lpn | grep :8080
----------------------------------------------------------------------------------------------------

You will get an output similar to this one
tcp6       0      0 :::8080                 :::*                    LISTEN      6782/java

2- I have got the process Id, which is 1234, now this is the process that is using port 8080.

3- Kill the process, type:
----------------------------------------------------------------------------------------------------------------------------------------
kill 6782
-------------------------------------------------------------------------------------------------

How to Upgrade OpenSSL on UBUNTU

How to Upgrade OpenSSL on Ubuntu

This quick tutorial outlines how to upgrade openssl to the latest version on Ubuntu Server 13.04.
A massive security hole has left over a third of the Internet's web servers vulnerable to the "Heartbleed Bug" which was announced to the public today. Use the following tool to check if your server is vulnerable:


You can run the following Bash script to upgrade your instance of OpenSSL to the latest version


--------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash

###
# Need to upgrade an Ubuntu 13.04 server to use OpenSSL 1.0.1g?
# Read and execute this script :D
###
# License: WTFPL, GPLv3, MIT, whatever; just patch your shit
# http://askubuntu.com/questions/444702/how-to-patch-cve-2014-0160-in-openssl
###

if [[ $EUID -ne 0 ]]; then
 echo "This script must be run as root" 1>&2
 exit 1
fi
wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz
wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz.asc

gpg --recv-key 0xD3577507FA40E9E2
# Dr Stephen Henson
# IMPORTANT! Manually verify that this is the correct key ID:
# http://pgp.mit.edu:11371/pks/lookup?op=vindex&search=0xD3577507FA40E9E2
# https://www.openssl.org/about/

gpg --verify openssl-1.0.1g.tar.gz.asc openssl-1.0.1g.tar.gz

if [[ $? -eq 0 ]]; then
 tar xzvf openssl-1.0.1g.tar.gz
 cd openssl-1.0.1g && sudo ./config && sudo make && sudo make install
 # To link the old openssl library to a new version
 sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`
 echo
 echo "DONE!"
fi

# eof
 
------------------------------------------------------------------------------------------------
  

 

Wifi driver instalation ( Ubuntu )

Please try:

sudo apt-get install  linux-backports-modules-cw-3.8-precise-generic

I believe cw-3.8 includes the modalias for your device.
If your device is still not shown, please post:
 
modinfo ath9k | grep 0036
dmesg | grep ath

Please get a working ethernet connection, open a terminal and do:
 
sudo apt-get install linux-headers-generic build-essential

Download this file to your desktop: https://www.kernel.org/pub/linux/kernel/projects/backports/2013/11/13/backports-20131113.tar.bz2 Right-click it and

select 'Extract Here.' Back to the terminal:
 
cd Desktop/backports-20131113/
make defconfig-ath9k
make
sudo make install

Reboot and let us know if it is working. You will have compiled the driver for your currently running kernel only. When Update Manager installs a newer kernel version, also known as linux-image, after you reboot, re-compile:
 
cd Desktop/backports-20131113/
make clean
make defconfig-ath9k
make
sudo make install
sudo modprobe ath9k

The requested URL /phpmyadmin/ was not found on this server. (phpmyadmin )

Not Found

The requested URL /phpmyadmin/ was not found on this server.


Apache/2.2.17 (Ubuntu) Server at localhost Port 80

 Solution :


You will need to configure your apache2.conf to make phpMyAdmin works.
-----------------------------------------------------------------------------------------------------------------------------------------
sudo nano /etc/apache2/apache2.conf
-----------------------------------------------------------------------------------------------------------------------------------------
 
Then add the following line to the end of the file.----------------------------------------------------------------------------------------------------------------------------------------- 

Include /etc/phpmyadmin/apache.conf
-----------------------------------------------------------------------------------------------------------------------------------------
  
Restart the apache server : 
-----------------------------------------------------------------------------------------------------------------------------------------
sudo service apache2 restart 
-----------------------------------------------------------------------------------------------------------------------------------------
  

PPTP VPN Server on Debian/Ubuntu

PPTP VPN Server on Debian/Ubuntu

Quick setup: Copy and Paste

This section is for the impatient. All you have to do is login to your Debian/Ubuntu server and copy paste the following commands and you’ll have a working VPN server in less than 2 mins.
In this section I assume you’re logged in as the root user, do NOT have any instance of pptpd installed now or earlier and the “net.ipv4.ip_forward” is commented in the /etc/sysctl.conf file.

apt-get install pptpd -y
update-rc.d pptpd defaults
echo "localip 192.168.1.1" >>; /etc/pptpd.conf
echo "remoteip 192.168.1.2-254" >> /etc/pptpd.conf
echo "ms-dns 8.8.8.8" >> /etc/ppp/pptpd-options
echo "ms-dns 8.8.4.4" >> /etc/ppp/pptpd-options
echo "username * Pa55w0rd *" >> /etc/ppp/chap-secrets
service pptpd restart
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
iptables -I INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT
iptables -I INPUT -p gre -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 192.168.1.0/24 -j TCPMSS  --clamp-mss-to-pmtu

Install the PPTPD package

On Debian/Ubuntu operating systems
apt-get install pptpd -y
update-rc.d pptpd defaults

Setup VPN and DNS IP addresses

 Edit the following file
nano /etc/pptpd.conf
And add the following lines to the end
localip 192.168.1.1
remoteip 192.168.1.2-254
You can use any private IP address range just make sure it is not already used in your local network and the local IP and the remote IP are in the same range.
Edit the following file to mention DNS servers
nano /etc/ppp/pptpd-options
Add the following lines to the end
ms-dns 8.8.8.8
ms-dns 8.8.4.4
You can use any DNS server here I’m using Google Public DNS just as an example.

Add usernames and passwords

Edit the following file
nano /etc/ppp/chap-secrets
and add username/password combinations one in each line in the following format

username * password *

Example

kirthan * rsEsss *
user2 * vPnpass *

If only you are going to use this VPN server a single username/password combination is enough.

Restart the pptpd service

service pptpd restart

Enable forwarding and create iptables rules

Our main purpose of setting up this VPN server is to access website right ? So our traffic has to be forwarded out of the VPN server’s public network interface.
Enable port forwarding on Linux by editing the sysctl.conf file

nano /etc/sysctl.conf

Add or find and comment out the following line





net.ipv4.ip_forward=1

Save, close the file and run the following command to make the changes take effect.

sysctl -p

The following iptables firewall rules allow port 1723, GRE and perform NAT


iptables -I INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT
iptables -I INPUT -p gre -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
In the last rule replace “eth0″ with the interface connecting to the internet on your VPN server. Finally the following rule is required to ensure websites load properly
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 192.168.1.0/24 -j TCPMSS  --clamp-mss-to-pmtu
Replace 192.168.1.0/24 with the IP address range used in the “remoteip” option in the /etc/pptpd.conf this firewall rule is used to ensure a proper MTU value is used to prevent fragmentation. To save the IPTables rules 

Create a VPN connection on your computer

Open the network setting and create new vpn connection
and add the Vpn server detail like password username ip




Free OpenVPN and PPTP VPN

Click on this link : Free vpn server


 

SSL Authentication for website

Two Way SSL Authentication

In standard SSL connections your browser verifies the identity of the server via it's certificate. With 2 way authentication your browser also needs a certificate in order for the server to verify it and allow it access to the pages.

  Steps reqired :

  1. Creating OpenSSL certificates
  2.  Configure Apache 
  3.  Configure your browser

Creating OpenSSL certificates

Make sure OpenSSL is installed on whichever server you want to be your CA.
You will need an openssl.cnf file. Here is the one I used.
 
#/etc/ssl/openssl.cnf

[ req ]
default_md = sha512
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
countryName = Country
countryName_default = GB
countryName_min = 2
countryName_max = 2
localityName = Locality
localityName_default = United Kingdom
organizationName = Organization
organizationName_default = SpiderWiki
commonName = Common Name
commonName_max = 64

[ certauth ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:true
crlDistributionPoints = @crl

[ server ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
nsCertType = server
crlDistributionPoints = @crl

[ client ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = clientAuth
nsCertType = client
crlDistributionPoints = @crl

[ crl ]
URI=http://www.spiderwiki.org/ca.crl

So first we need a self signed certificate for our CA.
 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
openssl req -config /etc/ssl/openssl.cnf -newkey rsa:2048 -nodes -keyform PEM -keyout ca.key -x509 -days 3650 -extensions certauth -outform PEM -out ca.cer
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Next we will generate a private SSL key for our server.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
openssl genrsa -out server.key 2048
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
To generate Certificate Signing Request (PKCS#10) run the following command. For the common name you should put the URL for the server e.g. www.spiderwiki.org
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
openssl req -config  /etc/ssl/openssl.cnf -new -key server.key -out server.req
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
With self-signed certificate authority issue server certificate with serial number 100:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
openssl x509 -req -in server.req -CA ca.cer -CAkey ca.key -set_serial 100 -extfile /etc/ssl/openssl.cnf -extensions server -days 365 -outform PEM -out server.cer
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The new file contains both the certificate and the private key so we can delete the request file.
 
rm server.req

Now that the server certificates are done we need to create the key for a client.
 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
openssl genrsa -out client.key 2048

Then the request.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 openssl req -config /etc/ssl/openssl.cnf -new -key client.key -out client.req
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

And issue certificate ID with our CA for the client.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
openssl x509 -req -in client.req -CA ca.cer -CAkey ca.key -set_serial 101 -extfile /etc/ssl/openssl.cnf -extensions client -days 365 -outform PEM -out client.cer
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Save client's private key and certificate in a PKCS#12 format. You will need to set a password in this command.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
openssl pkcs12 -export -inkey client.key -in client.cer -out client.p12
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Then tidy up.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
rm client.key client.cer client.req
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Configure Apache

Depending on the version of Apache and your distro this can be slightly different so as a general guide.
  • You need to tell Apache to also listen on port 443 (at least that's the default for SSL)
  • You need to enable the SSL module.
  • Set a new VirtualHost (or modify your main server to use SSL)
  • Move the required files to the location set in your virtual host.
  • Restart Apache
Here is my default-ssl virtual host config file.
 
#vi /etc/apache2/sites-available/default-ssl 
 
<IfModule mod_ssl.c>
<VirtualHost _default_:443>

        ServerAdmin webmaster@localhost

        DocumentRoot /var/securewww/
        
                Options FollowSymLinks
        
                Options Indexes FollowSymLinks MultiViews
        

        LogLevel warn
        ErrorLog /var/log/apache2/error.log
        CustomLog /var/log/apache2/ssl_access.log combined

        SSLEngine on
        SSLCertificateFile    /etc/apache2/ssl/server.cer
        SSLCertificateKeyFile /etc/apache2/ssl/server.key
         
        # Below for 2 way ssl
        SSLVerifyClient require
        SSLVerifyDepth 10
        SSLCACertificateFile /etc/apache2/ssl/ca.cer



</VirtualHost>
</IfModule>

Configure your browser

Copy client.p12 file to the machine you intend to use. Install it into your browsers certificate store. This process is different on each browser.

htaccess ip restriction

Create .htaccess file inside your site folder and copy the below content to .htaccess file and replace "your_site_folder" to your's and also the IP

----------------------------------------------------------------------------------------------------------------------------------------
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /var/www/vhosts/your_site_folder/.htpasswd   
#path to htpasswd   
AuthGroupFile /dev/null


Satisfy Any
<Limit GET POST>
    Order Deny,Allow
    Deny from all
    Allow from 192.168.0.5              #(ip needed to be allowed)

    Allow from 192.168.0.6              #(ip needed to be allowed)
    Allow from 192.168.0.7              #(ip needed to be allowed)
    Require valid-user
</Limit>

----------------------------------------------------------------------------------------------------------------------------------------

OR                                                        


The htpassd file can also be added in /etc/apache2/site-available ceare a file in this folder and add the below line to that folder. And below is that if you are using proxy.

<VirtualHost *:80>
      ServerName kir.example.com

    ProxyRequests off

ProxyRequests off

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    <Location />
        AuthType Basic
        AuthName "Please Log in"
        AuthUserFile /var/www/myapp/.htpasswd            #path to htpasswd file
        Require valid-user
        Order allow,deny
        Allow from 000.00.00.00
        Allow from 000.00.00.00

        Allow from 000.00.00.00
        satisfy any
        ProxyPass http://localhost:3500/
        ProxyPassReverse http://kir.example.com:3500/
    </Location>

</VirtualHost>

 

Add a User To Group Linux

Add a existing user to existing group :

To add an existing user jerry to sftpjail supplementary/secondary group with usermod command using -a option ~ i.e. add the user to the supplemental group(s). Use only with -G option:
-----------------------------------------------------------------------------------------------------------------------------
usermod -a -G sftpjail jerry
-----------------------------------------------------------------------------------------  
 
To change existing jerry's primary group to lll, enter:

-----------------------------------------------------------------------------------------
usermod -g lll jerry 
-----------------------------------------------------------------------------------------

Errr 'mongo.js:L112 Error: couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:L112'

If you are running Ubuntu, then there is an issue with folder ownership. 

Run these commands:
  1. Stop the MongoDB service
    -------------------------------------------------------------------------------------------------------------------------------
    sudo service mongodb stop
    -------------------------------------------------------------------------------------------
  2. Remove the MongoDB lock file
    ------------------------------------------------------------------------------------------------------------------------------- 
    sudo rm /var/lib/mongodb/mongod.lock
    --------------------------------------------------------------------------------------------
  3. Change ownership from root to the MongoDB path
    ------------------------------------------------------------------------------------------------------------------------------- 
    sudo chown -R mongodb:mongodb /var/lib/mongodb/
    ---------------------------------------------------------------------------------------------
  4. Start the MongoDB service
    ------------------------------------------------------------------------------------------------------------------------------- 
    sudo service mongodb start
    ----------------------------------------------------------------------------------------------
  5. Test the mongo application
    ------------------------------------------------------------------------------------------------------------------------------- 
    mongo 
    ---------------------------------------------------------------------------------------------

Start and Stop ssh-agent

Below is the bash script used to start and stop ss-agent #!/bin/bash ## in .bash_profile SSHAGENT=`which ssh-agent` SSHAGENTARGS="...