# Setting Up a GUI on AWS Ubuntu Using VNC
This guide covers the setup of a graphical user interface (GUI) on an AWS Ubuntu server using VNC. You can choose between TightVNC Server or RealVNC for this purpose.
## Prerequisites
- An AWS EC2 Ubuntu instance
- A `.pem` file for SSH access
- VNC client installed on your local machine
## Steps
### 1. Install VNC Server
First, choose and download a VNC server like TightVNCServer or RealVNC on your Ubuntu instance.
```bash
sudo apt update
sudo apt install ubuntu-desktop
sudo apt install tightvncserver
sudo apt install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
2. Secure Shell (SSH) into Your Instance
Use the SSH command to log into your instance:
ssh -i key.pem ubuntu@your-server-ip
3. Update and Upgrade Your Server
Ensure your server is up to date:
sudo apt update && sudo apt upgrade -y
4. Install XFCE and VNC Server
Install the XFCE desktop environment and VNC server:
sudo apt install xfce4 xfce4-goodies tightvncserver -y
5. Start and Configure VNC Server
Initialize the VNC server to create the configuration files:
vncserver
You will be prompted to set a password, which will be used to connect to the VNC desktop. After setting the password, terminate the VNC server session to configure it properly:
vncserver -kill :1
6. Configure VNC Startup
Edit the VNC configuration file:
vim ~/.vnc/xstartup
Add the following to ensure XFCE starts with VNC:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Make the script executable:
chmod +x ~/.vnc/xstartup
7. Restart the VNC Server
Restart the VNC server to apply changes:
vncserver
8. Configure Security Group (SG) Inbound Rules
Edit the inbound rules on your instance’s security group to allow TCP traffic on port 5901 for screen :1, 5902 for screen :2, etc.
9. Connect From Your Local Machine
Use SSH with port forwarding to connect and start using your GUI:
ssh -L 5901:localhost:5901 -i key.pem ubuntu@your-server-ip
Conclusion
You now have a GUI set up on your AWS Ubuntu instance accessible via VNC. This setup allows you to manage your server through a graphical interface from your local machine.