To prepare the stock, combine the first 6 ingredients in a large Dutch oven; bring to a boil. Reduce heat, and simmer 30 minutes. Drain stock through a fine sieve into a bowl; discard solids.
To prepare soup, wipe pan dry with a paper towel. Heat pan over medium-high heat. Coat pan with cooking spray. Add 1 cup onion, sugar, and salt; sauté 3 minutes. Add 1 tablespoon ginger, 3 garlic cloves, and chile; sauté 30 seconds. Stir in stock, tomato, and beer; bring to a boil. Cook until reduced to 6 cups (about 15 minutes). Stir in coconut milk; bring to a boil. Reduce heat, and simmer 20 minutes, stirring occasionally. Add fish; cook 5 minutes over medium-high heat or until fish flakes easily when tested with a fork or until desired degree of doneness. Stir in cilantro and juice. Serve with rice and lime wedges.